2016-04-27 6 views
1

私は私が何をしたか、AppDomainによって提供さUndhandledExceptionを使用していますが、基本的にこれです:UnhandledExceptionからのメッセージのみを取得するには?

あなたは、私がメッセージプロパティにアクセスすることはできません見ることができますが、私はブレークポイントを設定している場合、私はどうすればよい
static void Main(string[] args) 
{ 
     AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper; 
} 

static void UnhandledExceptionTrapper(object sender, UnhandledExceptionEventArgs e) 
{ 
    e.ExceptionObject.Message? <- there is no message 
    Console.WriteLine(e.ExceptionObject.ToString()); 
    Console.WriteLine("Press a key for exit."); 
    Console.ReadLine(); 
    Environment.Exit(1); 
} 

e変数のプロパティを参照してください。なぜこれを使用できないのですか?

+1

たぶん '(e.ExceptionObjectは例外である)場合は{((例外)Eをキャストすることを示唆しています。 ExceptionObject).Message; } ' – Quantic

+0

ああ、私はそれをキャストする必要があります、私を試してみましょう。ヒントありがとう! – IlDrugo

+1

決して、*決して*、**決して**これをしないでください。 e.ExceptionObject.ToString()だけが床にInnerExceptionを落とさない妥当な診断を生成します。 –

答えて

5

問題はExceptionObjectが対象です。あなたはMessage

var exception = (e.ExceptionObject as Exception); 
if (exception != null) 
{ 
    message = exception.Message; 
} 

を取得するために、例外にキャストすることができますかMSDNは、このようにそれ

Exception exception = (Exception) e.ExceptionObject; 
var message = exception.Message; 
+0

@Rahulはい最初の 'as'は' ExceptionObject'が例外である場合にのみキャストを実行します。ありがとうございました! – IlDrugo

+0

私は奇妙な状況を起こしています。 'Console.WriteLine(" Message: "+ message);'メッセージは表示されません。代わりに、この作業: 'Console.WriteLine(message);' – IlDrugo

関連する問題