0

UnhandledExceptionを引き起こした元の例外にアクセスしようとしていますが、表示されるのはUnhandledExceptionEventArgs.Messageプロパティに含まれるテキストだけです。

例えば:

  • クリックハンドラー付きのボタン付きのビューがあります。
 private void Button_Click_1(object sender, RoutedEventArgs e)
 {
     throw new NullReferenceException("Test exc");
 }
  • アプリコンストラクターで、UnhandledException例外をサブスクライブしました
 this.UnhandledException += App_UnhandledException;

 private void App_UnhandledException(object sender, UnhandledExceptionEventArgs e)
 {
     Debug.WriteLine(e.Message);
     Debug.WriteLine(e.Exception.ToString()); 
 }
  • その結果、元の例外テキスト「Testexc」を取得するオプションがありません。私が持っているのは

メッセージ=W8.Controls.SearchControl.Button_Click_1(オブジェクト送信者、RoutedEventArgs e)でのSystem.NullReferenceException

Exception = System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。

アドバイスをよろしくお願いします!

4

1 に答える 1

0

UnhandledException に伝達されるものには、いくつかの制限があります。文書化されているように

もう 1 つの制限は、UnhandledException イベント引数に元の例外ほど詳細が含まれていないことです。可能な限り、アプリケーションが特定の例外の特定の処理を必要とする場合は、例外が伝播するときに例外をキャッチすることをお勧めします。より詳細な情報が得られるからです。UnhandledException イベント引数は、Exception プロパティを通じて例外オブジェクトを公開します。ただし、この例外オブジェクトの型、メッセージ、およびスタック トレースは、発生した元の例外のものと一致するとは限りません。イベント引数は Message プロパティも公開します。ほとんどの場合、これには最初に発生した例外のメッセージが含まれます。

于 2012-11-22T00:17:23.037 に答える