2014-02-15 7 views
0

Я хочу написать обработчик исключений в моем приложении C# для обработанных и необработанных исключений. Однако для обработанных я хочу иметь возможность указать, должно ли приложение завершаться или продолжать работу (например, если соединения с базой данных не работают, то нет смысла продолжать править ...). Я заметил, что класс Exception имеет что-то, называемое «Data» (словарь) для передачи сообщений, но я не очень уверен, что именно там мы должны указывать флаг для закрытия приложения. Я больше склоняюсь к созданию класса Custom Exception с использованием свойства Boolean. Данные могут использоваться для некоторых настраиваемых сообщений об исключении, но, похоже, не являются местом для связи внутри приложения. Мне любопытно узнать, правильно ли я понимаю, и это общий способ обработки исключений или есть лучший способ.Обработчик исключений с флагом isFatal

+1

Пожалуйста, покажите код, чтобы рассказать нам, что вы имеете в виду, когда говорите «обработчик исключений». Этот термин имеет несколько значений. –

+0

И о каких исключениях вы говорите? Пожалуйста, покажите пример. В общем случае, если исключение выбрано и не обрабатывается, приложение должно быть закрыто. –

ответ

0

Если вы создаете приложение WinForms, инициализируйте базу данных до того, как первая форма загрузится в ваш метод Main(). Если там выбрано исключение, поймайте его и покажите MessageBox пользователю, сообщив им, что соединение с базой данных не может быть инициализировано и при принятии, return из Main(), чтобы сохранить форму при загрузке. (Вы можете также связать любые другие вещи, как это, прежде чем загружать форму, чтобы убедиться, что все будет работать должным образом после запуска реального интерфейса.)

Кроме этого, классы пользовательских исключений полезны, если по умолчанию .NET Exceptions не предоставляют необходимые функции (как в вашем случае), или вы хотите убедиться, что обработка пользовательских ошибок происходит в любое время при возникновении типа ошибки. Использование исключений по умолчанию может привести к перекрытию с исключениями, которые генерируются кодом языка .NET и вашим собственным. Наличие такого флага будет работать, но это зависит от того, где вы поймаете его в стеке.

+2

-1: Пользовательские классы исключений - это не всегда хорошая идея. Это всего лишь хорошая идея, когда необходимо, чтобы пользовательское исключение было _caught_ и обрабатывалось иначе, чем встроенные исключения или другие пользовательские исключения. –

+0

Очень хорошая точка. Я действительно имел в виду, что когда Исключения по умолчанию не предоставляют то, что вам нужно. Я отрегулирую свой ответ. – krillgar

Смежные вопросы