如何只从UnhandledException获取消息?

IlD*_*ugo 1 c#

我正在使用UndhandledException提供的AppDomain,我所做的基本上是这样的:

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);
}
Run Code Online (Sandbox Code Playgroud)

你怎么看我无法访问message属性,但是如果我设置了一个断点我可以在e变量上看到Message属性,为什么我不能使用它?

Val*_*tin 5

问题是ExceptionObject是一个对象.您可以将其强制转换为Exception以获取Message

var exception = (e.ExceptionObject as Exception);
if (exception != null) 
{
   message =  exception.Message;
}
Run Code Online (Sandbox Code Playgroud)

或MSDN建议以这种方式投射它

Exception exception = (Exception) e.ExceptionObject;
var message = exception.Message;
Run Code Online (Sandbox Code Playgroud)