我在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