В вашем методе-обработчике вы должны сообщить .NET, что вы обработали исключение.В противном случае он все равно убьет приложение.Это можно сделать с помощью свойства Handled
объекта DispatcherUnhandledExceptionEventArgs
.
Поэтому, если вы решите продолжить приложение, несмотря на исключение,установите его на true
:
private void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
e.Handled = true; //let's continue and see if anything explodes
}
Тем не менее, вы все равно должны обрабатывать исключения, где они могут возникать (насколько это возможно).Возьмите приведенный вами пример, который выглядит как проблема с сетевым подключением.Если вы обнаружили это исключение при создании соединения, вы можете сказать пользователю что-то более конкретное, например: «Я не смог подключиться к базе данных. Работает ли ваша сеть?»Принимая во внимание, что если вы полагаетесь на это, чтобы отследить такого рода ошибки, вы можете только извергнуть сообщение об исключении, которое часто не имеет смысла для пользователя.
Это следует использовать в качестве последней меры отказоустойчивости.Он не должен заменять ловлю исключения во всем вашем коде.