Почему обработчик не перехватывает исключение, сгенерированное конструктором App
?
Просто потому, что до создания App
диспетчер не работал.
Это метод Main
, сгенерированный для вас компилятором:
[STAThread]
static void Main(string[] args)
{
App application = new App(); //<-- your throw here
application.InitializeComponent();
application.Run(); //<-- and there is no dispatcher until here
}
Из документов :
Когда Run
называется, Application
присоединяет новый экземпляр Dispatcher
к потоку пользовательского интерфейса. Затем вызывается метод Run
объекта Dispatcher
, который запускает насос сообщений для обработки windows сообщений.
Вы не можете вызвать Run
до того, как вы фактически создали App
объект.