Я хочу написать обработчик исключений в моем приложении C# для обработанных и необработанных исключений. Однако для обработанных я хочу иметь возможность указать, должно ли приложение завершаться или продолжать работу (например, если соединения с базой данных не работают, то нет смысла продолжать править ...). Я заметил, что класс Exception имеет что-то, называемое «Data» (словарь) для передачи сообщений, но я не очень уверен, что именно там мы должны указывать флаг для закрытия приложения. Я больше склоняюсь к созданию класса Custom Exception с использованием свойства Boolean. Данные могут использоваться для некоторых настраиваемых сообщений об исключении, но, похоже, не являются местом для связи внутри приложения. Мне любопытно узнать, правильно ли я понимаю, и это общий способ обработки исключений или есть лучший способ.Обработчик исключений с флагом isFatal
ответ
Если вы создаете приложение WinForms, инициализируйте базу данных до того, как первая форма загрузится в ваш метод Main()
. Если там выбрано исключение, поймайте его и покажите MessageBox пользователю, сообщив им, что соединение с базой данных не может быть инициализировано и при принятии, return
из Main()
, чтобы сохранить форму при загрузке. (Вы можете также связать любые другие вещи, как это, прежде чем загружать форму, чтобы убедиться, что все будет работать должным образом после запуска реального интерфейса.)
Кроме этого, классы пользовательских исключений полезны, если по умолчанию .NET Exceptions не предоставляют необходимые функции (как в вашем случае), или вы хотите убедиться, что обработка пользовательских ошибок происходит в любое время при возникновении типа ошибки. Использование исключений по умолчанию может привести к перекрытию с исключениями, которые генерируются кодом языка .NET и вашим собственным. Наличие такого флага будет работать, но это зависит от того, где вы поймаете его в стеке.
-1: Пользовательские классы исключений - это не всегда хорошая идея. Это всего лишь хорошая идея, когда необходимо, чтобы пользовательское исключение было _caught_ и обрабатывалось иначе, чем встроенные исключения или другие пользовательские исключения. –
Очень хорошая точка. Я действительно имел в виду, что когда Исключения по умолчанию не предоставляют то, что вам нужно. Я отрегулирую свой ответ. – krillgar
- 1. обработчик исключений
- 2. Обработчик исключений
- 3. Поймать «PDOException» с обработчик исключений
- 4. Java: Обработчик исключений
- 5. WPF-глобальный обработчик исключений
- 6. Обработчик исключений на linux
- 7. EJB глобальный обработчик исключений
- 8. iOS - Глобальный обработчик исключений
- 9. Обработчик исключений в Node.js
- 10. Общий обработчик исключений
- 11. Java: Глобальный обработчик исключений
- 12. Redirect Обработчик исключений Laravel
- 13. Глобальный обработчик исключений WPF
- 14. глобальный обработчик исключений - mule
- 15. Пользовательский обработчик исключений C#
- 16. Laravel Отключить обработчик исключений
- 17. Универсальный обработчик исключений
- 18. Один обработчик исключений для всех исключений класса
- 19. Один обработчик исключений для нескольких возможных исключений
- 20. Обработчик исключений зависает на tomcat
- 21. Универсальный обработчик исключений для String.Format()
- 22. Назначить обработчик исключений методам класса
- 23. Глобальный обработчик исключений с UnhandledExceptionEventArgs не работает
- 24. spring mvc обработчик исключений с @RequestBody
- 25. Как протестировать обработчик исключений с помощью phpspec
- 26. Глобальный JSF обработчик исключений с КДИ инъекции
- 27. Пользовательский обработчик исключений в Angular2
- 28. Python - обработчик исключений не выполнен
- 29. C++ Win32 Обработчик необработанных исключений
- 30. AngularJS: Обработчик исключений для исправления?
Пожалуйста, покажите код, чтобы рассказать нам, что вы имеете в виду, когда говорите «обработчик исключений». Этот термин имеет несколько значений. –
И о каких исключениях вы говорите? Пожалуйста, покажите пример. В общем случае, если исключение выбрано и не обрабатывается, приложение должно быть закрыто. –