有没有办法捕捉这些例外?

时间:2011-02-04 03:25:58

标签: .net vb.net exception-handling

有没有办法捕捉这些例外情况? (我不是在寻找“只是把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

1 个答案:

答案 0 :(得分:3)

见这个:
http://temujin.blogsome.com/2006/03/15/static-constructors-and-exceptions/(现已死亡 - archive

关键点:

  

如果发生异常,运行时将始终将其包装在TypeInitializationException

因此,请尝试在application / AppDomain级别查找TypeInitializationException。也:

  

静态构造函数仅在初始化类型时由运行时执行一次;第二次访问静态字段时,将再次抛出初始异常

简而言之 - 不要做任何可能在静态(共享)构造函数中抛出异常的事情。将代码移动到静态属性或方法或实例构造函数。