我正在使用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属性,为什么我不能使用它?
问题是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)