2012-02-09 33 views
2

我在Visual Basic .NET 2008和,因爲他們是在測試階段,現在創造了一些複雜的應用中,人們設法每隔一段時間,導致程序崩潰找到一個或兩個錯誤。問題在於它有一個跟蹤記錄,記錄當前正在使用這些程序的人。當用戶登錄時,它會記錄他們當前登錄的內容,如果表單關閉事件被觸發,則會刪除日誌以顯示他們已經關閉它。捕獲錯誤事件

現在我的問題就來了,只要形式從崩潰的錯誤,因爲它不會觸發關閉事件,因此使得日誌變得不準確。我的問題是,是否有可能捕捉到表單可能以事件形式出現的任何錯誤?

回答

3

嘗試在解決方案資源管理器「我的項目」雙擊。

在「應用程序」選項卡中,朝下方是一個「查看應用程序事件」按鈕。點擊它。

你應該可以看到一個 「ApplicationEvents」 文件。選擇UnhandledException事件。

它應該是這樣的:

Namespace My 

    ' The following events are available for MyApplication: 
    ' 
    ' Startup: Raised when the application starts, before the startup form is created. 
    ' Shutdown: Raised after all application forms are closed. This event is not raised if the application terminates abnormally. 
    ' UnhandledException: Raised if the application encounters an unhandled exception. 
    ' StartupNextInstance: Raised when launching a single-instance application and the application is already active. 
    ' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected. 
    Partial Friend Class MyApplication 

    Private Sub MyApplication_UnhandledException(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException 
     // log your exception here. 
    End Sub 
    End Class 

End Namespace 

注:本次活動將不會觸發while a debugger is attached

+0

非常感謝您的回覆和示例。這正是我所期待的! – 2012-02-09 20:16:14

0

你可以用你的代碼周圍Try...Catch塊來捕獲拋出的異常。

例子:

Public Sub testProgram() 

     Try 

      'the code goes here 

     Catch ex As Exception 

      MessageBox.Show(ex.ToString) 

     End Try 

End Sub 

其實異常處理應該在開發階段完成。現在做這將是一個乏味的任務。

+0

全局try-catch在您的應用程序的發佈版本中不起作用。你會想要處理ThreadException。請參閱http://www.codeproject.com/Articles/7482/User-Friendly-Exception-Handling – 2012-02-09 19:32:56

+0

無論如何,在調試模式下,您肯定不希望全局嘗試捕獲,您希望它在特定行上崩潰錯誤。因此,未處理異常的異常處理應該只在Release中完成。 – 2012-02-09 19:34:59