捕获未处理的异常,仍然显示“程序停止工作”对话框

本文关键字:显示 程序 停止工作 对话框 未处理 异常 | 更新日期: 2023-09-27 18:24:12

我在这篇文章中读到,为了避免"程序停止工作"对话框,我需要从AppDomain捕获未处理的异常。

 public Form1()
 {
  ///Code
   AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
  ///more code
 }
     void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        var excep = e.ExceptionObject;
        //Writing the exception to log file with the stack flow
        Logger.Logger.LogException("UNHANDLED EXCEPTION:"+Environment.NewLine +excep.ToString(), this);
        //Terminate the logger (manual event waiting for file write to finish)
        Logger.Logger.Terminate();
        Environment.Exit(1);
    }

但当我被吸入时例外。我可以看到它写在日志上,但应用程序显示"程序停止工作"对话框。会是Logger.Terminate线路引起的吗?(再次-terminate命令等待,直到所有日志都写入日志文件)

捕获未处理的异常,仍然显示“程序停止工作”对话框

理想情况下,您希望避免"程序停止工作"对话框,因为您希望从一开始就避免"程序已停止工作"的情况。如果不是,如果您只是想记录错误并让程序正常结束,那么程序实际上必须正常结束。

如果你用Environment.Exit(1)退出程序,你几乎是在告诉操作系统,"嘿,我窃听了!",这与优雅的终止相反。尝试使用0代码退出,看看它是否有任何不同。