2012-02-09 30 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