C# AppDomain.CurrentDomain.UnhandledException不工作

C# AppDomain.CurrentDomain.UnhandledException不工作,c#,exception-handling,C#,Exception Handling,我试图让一个未经处理的异常处理程序工作,但它似乎没有任何作用。我必须在构造函数中执行以下操作: AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler); 而这个更进一步 static void MyHandler(object sender, UnhandledExceptionEventArgs args) { Exception e = (

我试图让一个未经处理的异常处理程序工作,但它似乎没有任何作用。我必须在构造函数中执行以下操作:

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);
而这个更进一步

static void MyHandler(object sender, UnhandledExceptionEventArgs args)
    {
        Exception e = (Exception)args.ExceptionObject;
        if (log != null)
        {
            if (args.IsTerminating)
                log.LogError(e.Message, e.Source, e.InnerException.Message);
            else
                log.LogWarning(e.Message, e.Source, e.InnerException.Message);
        }
        else
        {
            System.Reflection.Assembly exe = System.Reflection.Assembly.GetEntryAssembly();
            string exeDir = System.IO.Path.GetDirectoryName(exe.Location);
            File.WriteAllText(DocuPath.Join(exeDir, "Emergency.log"), e.ToString());
        }
    }

日志是一个静态对象,用于处理文件的日志记录。为什么不在对象写入的日志文件或Emergency.log中获取消息?

如果
e.InnerException
为空,则此方法内部会出现异常。
我认为在这里有这个问题不是个好主意

试试这个

 string innerMessage = e.InnerException != null ? e.InnerException.Message : string.Empty;
 if (args.IsTerminating)
     log.LogError(e.Message, e.Source, innerMessage);
 else
     log.LogWarning(e.Message, e.Source, innerMessage);

放一个断点,看看它是否被命中。你能给我们看一下引发异常的代码吗?你希望在这里得到处理?