我有这个代码的应用程序:
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。
我该如何处理这类异常?
答案 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