Код под блоком catch (после его закрытия) или нет?
У меня есть фрагмент кода, который смотрит на сетевой ресурс. Одной из ошибок является UnauthorizedAccessException, которая возникает, если мне нужно войти с помощью обычного auth для доступа к общему ресурсу.
Поскольку эта проблема исчезнет, если вы войдете в систему, когда всплывающее окно появится во время исключения, относится ли это к исключению, которое может быть обработано? Кроме того, было бы хорошей идеей написать:
string[] directories = null;
try
{
directories = Directory.GetDirectories(path);
}
catch (UnauthorizedAccessException unauthorizedAccessException)
{
Logger.Error(unauthorizedAccessException.Message, unauthorizedAccessException);
MessageBox.Show("An error has occur. Please check that you do not need to sign in to access the share. " + unauthorizedAccessException.Message, UiConstants.MessageBoxTitle, MessageBoxButtons.OK, MessageBoxIcon.Error)
}
... БОЛЬШЕ КОДА ЗДЕСЬ...
или, в блоке try, вставьте весь код. У меня сложилось впечатление, что если исключение можно восстановить, то под блоком catch может быть код. Каков наилучший способ структурировать такой код?
1 ответ
По моему мнению, блок try/catch является очень хорошим индикатором того, что код внутри выполняет одно единственное "действие", и, следовательно, добавление большего количества материала после перехвата ведет к нарушению теории единственной ответственности метода.
Я часто вижу методы, которые имеют 2, 3, 4 сложенных блока try/catch, и это всегда признак того, что этот код делает слишком много.