Проблема обработки исключений в режиме выпуска - PullRequest
3 голосов
/ 30 мая 2010

У меня есть приложение с этим кодом:

Module Startup
  <STAThread()> _
  Public Sub Main()
    Try
      Application.EnableVisualStyles()
      Application.SetCompatibleTextRenderingDefault(False)

      InitApp()

      Dim login As New LoginForm()
      Dim main As New MainForm()

      Application.Run(login)

      If login.DialogResult = DialogResult.OK Then
      ActUser = login.LoggedUser
      main.ShowDialog()
      End If

      DisposeApp()

    Catch ex As Exception
      ErrMsg(ex, "Error!", ErrorLogger.ErrMsgType.CriticalError)
      End 
    End Try
  End Sub
End Module

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

В чем проблема, пожалуйста?

РЕДАКТИРОВАТЬ: необработанное исключение из приложения - исключение WebException после неудачного вызова веб-службы.

Как я могу обработать эти типы исключений?

Ответы [ 2 ]

8 голосов
/ 30 мая 2010

Это нормально. В метод Application.Run () встроен обработчик исключений. отключено при отладке, чтобы упростить отладку исключений. Без отладчика обработчик исключений отобразит ThreadExceptionDialog.

Добавьте этот оператор в начало вашего метода Main, чтобы отключить этот обработчик исключений:

   Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException)
0 голосов
/ 30 мая 2010

Ваше исключение, вероятно, происходит в неосновном потоке. Попробуйте перехватить событие AppDomain.UnhandledException и выйти из него с информацией об исключении:

http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...