2010-07-01 5 views
0

Вопроса: Я ловлю в основном необработанные исключения с AddHandler System.AppDomain.CurrentDomain.UnhandledException, AddressOf OnUnhandledExceptionвозобновить выполнение программы после обработки необработанного исключения

Проблемы теперь, с этим обработчиком исключений

Public Sub OnUnhandledException(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs) 
    Console.WriteLine(e.ExceptionObject.ToString()) 
    Console.WriteLine("Press Enter to continue") 
    Console.ReadLine() 
    'Environment.Exit(1) 
End Sub 

выполнение программы по-прежнему бросает исключение, если я дон Не завершайте программу.
Теперь я хочу знать, как я могу изменить это на ошибку « »   резюме   следующий 'поведение? Это вообще возможно ?

<STAThread()> _ 
Public Sub Main(ByVal argv As String()) 
    'For i As Integer = 0 To argv.Length - 1 Step 1 
    'Console.WriteLine("Argument {0}: {1}", i, argv(i)) 
    'Next i 

    AddHandler System.AppDomain.CurrentDomain.UnhandledException, AddressOf OnUnhandledException 

    Throw New Exception("Test") 
    Console.WriteLine("Continue") 
End sub 

ответ

4

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

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