有没有办法捕捉这些例外情况? (我不是在寻找“只是把try / catch或者错误转到他们周围”)。我试图找出这些错误是否可以被他们之外的东西捕获。
Public Class ABC
Shared Sub New()
throw new Exception("Ha!")
End Sub
End Class
或者这个:
Public Class ABC
Dim obj as Object = CreateObject()
Public Function CreateObject()
throw new Exception("Ha!")
End Function
End Class
BTW,将这些放在我的启动类中(它是一个Windows窗体),因为“Shared Sub New()”中的第一行不起作用:
AddHandler Application.ThreadException, AddressOf Application_ThreadException
AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf CurrentDomain_UnhandledException
答案 0 :(得分:3)
见这个:
http://temujin.blogsome.com/2006/03/15/static-constructors-and-exceptions/(现已死亡 - archive)
关键点:
如果发生异常,运行时将始终将其包装在TypeInitializationException
中
因此,请尝试在application / AppDomain级别查找TypeInitializationException。也:
静态构造函数仅在初始化类型时由运行时执行一次;第二次访问静态字段时,将再次抛出初始异常
简而言之 - 不要做任何可能在静态(共享)构造函数中抛出异常的事情。将代码移动到静态属性或方法或实例构造函数。