Есть ли способ поймать эти исключения? - PullRequest
1 голос
/ 04 февраля 2011

Есть ли способ отловить эти исключения?(Я не ищу "просто поставить try / catch или на ошибку goto вокруг них").Я пытаюсь выяснить, могут ли эти ошибки быть пойманы кем-то вне их.

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

Кстати, помещая их в мой класс запуска (этоФорма Windows), так как первые строки в «Shared Sub New ()» не работают:

AddHandler Application.ThreadException, AddressOf Application_ThreadException
AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf CurrentDomain_UnhandledException

1 Ответ

3 голосов
/ 04 февраля 2011

Смотрите это:
http://temujin.blogsome.com/2006/03/15/static-constructors-and-exceptions/ (сейчас мертв - архив )

Ключевые моменты:

если возникает исключение, среда выполнения всегда помещает его в исключение TypeInitializationException

Поэтому попробуйте найти исключение TypeInitializationException на уровне приложения / домена приложений. Кроме того:

статический конструктор выполняется только один раз средой выполнения, когда тип инициализируется; при втором обращении к статическому полю снова будет выдано исходное исключение

В двух словах - не делайте ничего, что могло бы генерировать исключения в статических (общих) конструкторах. Переместите код в статические свойства или методы или конструктор экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...