Код под блоком catch (после его закрытия) или нет? - PullRequest
0 голосов
/ 09 апреля 2011

У меня есть фрагмент кода, который смотрит на сетевой ресурс. Одной из ошибок является 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 Ответ

0 голосов
/ 09 апреля 2011

По моему мнению, блок try / catch является очень хорошим индикатором того, что код внутри выполняет одно «действие», и, следовательно, добавление большего количества материала после перехвата приводит к нарушению теории единственной ответственности метода ,

Я часто вижу методы, которые имеют 2, 3, 4 сложенных блока try / catch, и это всегда признак того, что этот код делает слишком много.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...