捕获应用程序崩溃事件

4

我使用VB.Net制作了一个应用程序,但是有些用户在启动时会遇到崩溃的问题。提示信息是 "A problem caused this program from working correctly" 并且只有一个按钮 "Close the program"。由于在应用程序加载时发生了很多事情,所以是否有可能知道是什么导致了这个问题?

1个回答

6
如果您的项目属性中启用了“应用程序框架”,请在“应用程序”项目属性页面上单击“查看应用程序事件”按钮,然后添加一个事件处理程序:
Partial Friend Class MyApplication
    Private Sub MyApplication_UnhandledException(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
        ' ...
    End Sub
End Class

如果您没有使用应用程序框架,在整个Main方法周围放置try catch块即可。但是,这只会捕获在主线程上发生的异常。如果您的应用程序是多线程的,可以通过创建如下方法来处理所有线程的异常:

Public Sub UnhandledExceptionHandler(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs)
    ' ...
End Sub

然后将它附加到当前域的UnhandledException事件上,代码如下:

AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf UnhandledExceptionHandler

那个事件处理程序将被调用来处理域中任何地方的所有未处理异常,无论当前线程如何。


非常感谢SteveDog。现在有没有办法强制未处理的异常以查看错误? - theRonnie
我不确定你的问题是什么。如果抛出了异常并且未处理,则 MyApplication_UnhandledException 处理程序应该接收到它。我相信可能会在其他线程上发生未处理的异常或其他情况,这将不会被该异常处理程序处理,但在 UI 线程上引发的任何内容都应自动由该处理程序捕获。 - Steven Doggart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接