我使用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);
}
你怎么看我无法访问消息属性,但是如果我设置了一个断点,我可以在e
变量上看到Message
属性,为什么我可以&#39 ;用这个?
答案 0 :(得分:5)
问题是ExceptionObject是一个对象。您可以将其强制转换为Exception以获取Message
var exception = (e.ExceptionObject as Exception);
if (exception != null)
{
message = exception.Message;
}
或MSDN建议以这种方式投射
Exception exception = (Exception) e.ExceptionObject;
var message = exception.Message;