🛡️ 3段例外ガードのどこで止まる?

1. try-catch (OnStartup)

MainWindow の生成や DataContext 設定で落ちた場合、MessageBox で即通知。

2. DispatcherUnhandledException

UIスレッドで拾い損ねた例外を捕捉し、Handled = true にしてアプリを継続。

3. AppDomain.UnhandledException

別スレッドやタスクで発生した致命的エラーを検知して最後のダイアログを出す。

初期化フェーズの例外は try-catch で握りつぶし、スタックトレース付きで知らせます。ViewModel を InitializeComponent より前に生成しているのは、ここで NullReferenceException を拾った過去の反省からです。