捕捉未处理的例外决定

时间:2016-04-06 20:16:06

标签: vb.net unhandled-exception

我决定在我的某个应用程序上打开严格选项。而对于我的生活,我无法弄清楚如何编写一小段代码。在一个模块中,我有这段代码

    Sub Main()
        AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf CurrentDomain_UnhandledException
    End Sub
    Private Sub CurrentDomain_UnhandledException(sender As Object, e As UnhandledExceptionEventArgs)
        e.ExitApplication = False
    End Sub
在环顾四周并看到另一篇关于将它放入ApplicationEvents的帖子后,我通过处理所述事件让它发挥作用。因此出于好奇,我决定将AddHandler移动到同一个类中,然后很明显它的名称相同,但命名空间不同:

Partial Friend Class MyApplication
    Private Sub MyApplication_UnhandledException(sender As Object, e As UnhandledExceptionEventArgs) Handles Me.UnhandledException
        e.ExitApplication = False
        AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf CurrentDomain_UnhandledException
    End Sub

    Private Sub CurrentDomain_UnhandledException(sender As Object, e As System.UnhandledExceptionEventArgs)
        e.ExitApplication = False
    End Sub
End Class

以下是两者的链接:

所以我的问题是,我应该使用哪一个?我想阻止应用程序关闭......但这两个选项看起来都像我想要的那样。

1 个答案:

答案 0 :(得分:1)

System.UnhandledException没有ExitApplication成员(请参阅您链接的文档),因此不能用于停止退出应用程序 - 一旦调用该应用程序,应用程序将始终终止。通常,Microsoft.VisualBasic命名空间是VB的帮助程序,其他地方可以使用或多或少的重复功能。与您提到的VisualBasic处理程序最接近的等价物是Application.ThreadException。这个和AppDomain.CurrentDomain.UnhandledExceptionMS docs中都得到了很好的描述。

要阻止应用关闭VisualBasic,可以使用ThreadException。我过去曾使用Microsoft.VisualBasic来实现类似于你正在做的事情。