我在Visual Basic .NET 2008和,因爲他們是在測試階段,現在創造了一些複雜的應用中,人們設法每隔一段時間,導致程序崩潰找到一個或兩個錯誤。問題在於它有一個跟蹤記錄,記錄當前正在使用這些程序的人。當用戶登錄時,它會記錄他們當前登錄的內容,如果表單關閉事件被觸發,則會刪除日誌以顯示他們已經關閉它。捕獲錯誤事件
現在我的問題就來了,只要形式從崩潰的錯誤,因爲它不會觸發關閉事件,因此使得日誌變得不準確。我的問題是,是否有可能捕捉到表單可能以事件形式出現的任何錯誤?
我在Visual Basic .NET 2008和,因爲他們是在測試階段,現在創造了一些複雜的應用中,人們設法每隔一段時間,導致程序崩潰找到一個或兩個錯誤。問題在於它有一個跟蹤記錄,記錄當前正在使用這些程序的人。當用戶登錄時,它會記錄他們當前登錄的內容,如果表單關閉事件被觸發,則會刪除日誌以顯示他們已經關閉它。捕獲錯誤事件
現在我的問題就來了,只要形式從崩潰的錯誤,因爲它不會觸發關閉事件,因此使得日誌變得不準確。我的問題是,是否有可能捕捉到表單可能以事件形式出現的任何錯誤?
嘗試在解決方案資源管理器「我的項目」雙擊。
在「應用程序」選項卡中,朝下方是一個「查看應用程序事件」按鈕。點擊它。
你應該可以看到一個 「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。
你可以用你的代碼周圍Try...Catch塊來捕獲拋出的異常。
例子:
Public Sub testProgram()
Try
'the code goes here
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
其實異常處理應該在開發階段完成。現在做這將是一個乏味的任務。
全局try-catch在您的應用程序的發佈版本中不起作用。你會想要處理ThreadException。請參閱http://www.codeproject.com/Articles/7482/User-Friendly-Exception-Handling – 2012-02-09 19:32:56
無論如何,在調試模式下,您肯定不希望全局嘗試捕獲,您希望它在特定行上崩潰錯誤。因此,未處理異常的異常處理應該只在Release中完成。 – 2012-02-09 19:34:59
非常感謝您的回覆和示例。這正是我所期待的! – 2012-02-09 20:16:14