vs2012 配合.net frameworks4.0编写程序
系统 win7 64bit
问题:
在VS2012的IDE中运行程序能捕捉到错误,而直接运行程序则捕捉不到错误.Debug和Release模式都是如此
详细描述:
Form1是启动窗体,代码如下
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
Form2.ShowDialog()
Catch ex As Exception
MsgBox("成功捕捉错误:" & ex.ToString)
End Try
End Sub
另有Form2,代码如下
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
MsgBox(CInt("xxx"))
End Sub
总体来说就是有一个form1,其中有一个按钮,点击后出现form2, form2中也有一个按钮,点击会引发一个错误
在ide用运行的时候,这个错误会被form1的Try语句捕捉,从而让我使用自己的代码来处理这个错误
但如果是直接运行(鼠标双击)编译好的exe,则这个错误不会被form1的Try语句捕捉到,导致我无法用想要的方式来处理.
为何直接运行编译好的exe就捕捉不到呢?
原本我以为只要在程序最开始的地方写上try语句就可以轻松的捕获整个程序任何位置的错误;
现在看来需要在所有的位置都重复写上try语句才能做到了.
------解决思路----------------------
这是IDE自动加了对未捕获错误的处理。exe模式有专门的事件的。

点这个按钮,在新打开的 MyApplication 类中添加下面的代码
Private Sub MyApplication_UnhandledException(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
MsgBox("未捕捉错误:" & e.Exception.Message & vbNewLine & _
"类型:" & vbNewLine & e.Exception.GetType().ToString & vbNewLine & _
"堆栈:" & vbNewLine & e.Exception.StackTrace)
e.ExitApplication = False
End Sub
就有结果了
