发布模式下的异常处理问题

时间:2010-05-29 23:25:00

标签: vb.net exception exception-handling

我有这个代码的应用程序:

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

在调试模式下,可以使用。 但是在发布模式下,当应用程序异常发生时,我在Main方法中的全局catch不会捕获异常。

请问有什么问题?

编辑:来自应用程序的未处理异常是在Web服务调用失败后抛出WebException。

我该如何处理这类异常?

2 个答案:

答案 0 :(得分:8)

这很正常。 Application.Run()方法中内置了一个异常处理程序。调试时禁用以便更轻松地调试异常。如果没有调试器,异常处理程序将显示ThreadExceptionDialog。

在Main方法的顶部添加此语句以禁用此异常处理程序:

   Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException)

答案 1 :(得分:0)

您的异常可能发生在非主线程上。尝试挂钩AppDomain.UnhandledException事件并在那里注销您的异常信息:

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