Глобальная обработка исключений VS Попробуйте поймать везде - PullRequest
2 голосов
/ 13 октября 2019

Недавно я использовал глобальную обработку исключений в своем коде и узнал, что с этим можно обрабатывать все исключения. Ранее я использовал try-catch на каждом контроллере, а теперь я удалил все try-catch из контроллера из-за глобального исключения, поскольку оно может обрабатывать все типы исключений.

Поэтому я сомневаюсь, что это хорошоПрактикуйте удаление всей обработки исключений, которую я ранее использовал в контроллере для обработки глобальных исключений или должен использовать как Global, так и try-catch на контроллере.

И если требуется try-catch, необходимо ли обрабатывать все исключения на уровне контроллера.

Мой текущий рабочий стек - .Net Core.

1 Ответ

0 голосов
/ 13 октября 2019

Вопрос слишком широкий, чтобы дать полный ответ, но позвольте мне высказать свое мнение по этому вопросу.

try-catch-finally блоки не используются для обработки необработанных исключений. Естественно, что случаи, о которых вы никогда не задумывались, останутся необработанными, и вы не должны молчать о них, но вы должны позволить им выразить себя, чтобы вы думали о них. Обрабатываемые исключения - это случаи, которые не находятся в руках программиста, но он / она думает о них. Например, пользовательский ввод - это строка вместо числа.

Если вы думали, что это ваш случай, то всегда проверяйте с помощью if s. Например, если что-то может быть нулевым. Try-catch действительно дорогостоящий, и никакой логики в них не нужно обрабатывать.

Использование глобального обработчика исключений, с другой стороны, является точным опосситом. Это не обернуть все мыслимые случаи и показать один ответ пользователю. Вы должны регистрировать неизвестные исключения, чтобы вернуться и подумать о том, почему они произошли, и тем временем сказать, что вы сожалеете о пользователе. :)

...