2014-03-31 24 views
0

如果发生任何未处理异常,我需要运行进程。未处理异常情况下运行进程

那么有没有办法在应用程序中捕获所有异常并在这种情况下创建一个进程?

更新(蒂姆):这是一个单一的形式的VB.NET应用程序,有几个函数每个都抛出一个异常,每次都有一个不同的原因,所以我找不到一个解决方案,应用

+0

什么样的应用程序? WinForm的? ASP.NET?您应该能够创建一个全局异常处理程序,但具体情况因应用程序而异。还是你想要捕捉应用程序范围之外的未处理的异常?这是完全不同的情况。 – Tim

+0

请检查更新后的问题 –

回答

1

(对于的WinForms)您需要订阅ThreadException事件(你可以从你的 '主' 的方法做到这一点):

AddHandler Application.ThreadException, AddressOf OnThreadException 

为OnThreadException的签名是:

Sub OnThreadException(ByVal sender As Object, ByVal t As System.Threading.ThreadExceptionEventArgs 
+0

如果您不介意,可否请您解释一下,但更多的如何去订阅部分。 和关于小组我应该把它放在窗体或其他地方? –

+0

您需要在项目设置中禁用“激活应用程序框架”。然后创建一个新模块并在其中放置一个Sub Main()。选择这个子项目作为你的项目的开始子项并从那里运行你的应用程序。 – Jens

+0

要订阅,您只需指定一个方法(我使用“OnThreadException”,但您可以调用它),在发生事件(System.Windows.Forms.Application.ThreadException)时将调用该方法。您可以将该方法放在任何您想要的位置 - 您可能希望为其创建一个类,然后实例化该类并传递该实例的方法 - 例如Dim myInstance As New UnexpectedExceptions&AddHandler Application.ThreadException,AddressOf myInstance.OnThreadException。 –