2012-05-09 87 views
4

我在VB.Net中創建了一個應用程序。但是一些用戶在啓動時會面臨崩潰。這就是「一個問題導致該程序無法正常工作」,只需一個按鈕「關閉程序」。由於應用程序加載時發生了很多事情,是否有可能知道是什麼導致了這個問題?捕捉應用程序崩潰事件

回答

5

如果在您的項目屬性中啓用了「應用程序框架」,請單擊「應用程序」項目屬性頁面上的「查看應用程序事件」按鈕。然後添加事件處理程序:如果您不使用應用程序框架

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 

,你應該把一個try catch塊圍繞整個Main方法。但是,這隻會捕獲主線程上發生的異常。

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

然後將其連接到當前域的UnhandledException事件,像這樣:

AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf UnhandledExceptionHandler 

如果應用程序是多線程的,你可以通過創建一個像這樣的方法處理來自所有線程中的異常無論當前線程如何,該事件處理程序都會從​​域中的任何位置調用所有未處理的異常。

+0

非常感謝SteveDog。無論如何,強迫無視例外以查看錯誤? – theRonnie

+0

我不確定你的問題是什麼。如果引發異常並且未處理,則MyApplication_UnhandledException處理程序應該接收它。我相信你可能在其他線程上有未處理的異常,或者那些不會被該異常處理程序處理的異常,但是在UI線程上拋出的任何東西都應該被該處理程序自動捕獲。 –