C#程序如何捕捉未try/catch的异常——不弹“XXX…

2018-06-18 04:28:59来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

诚意满满直接上代码:

static void Main(string[] args)
{
    //Main函数中增加此句
    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}

并在Program类(Main函数所在类)中,增加如下函数即可:

        private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            Console.WriteLine(e.ExceptionObject.ToString());
            Environment.Exit(-1); //有此句则不弹异常对话框
        }

注意:如果在CurrentDomain_UnhandledException中只打印异常而不终止程序的话,该异常仍然会被抛出,最终还是会导致弹出“XXX已停止工作”的对话框,所以如果不想弹框让程序卡住的话就需要用第二句Environment.Exit或其他方式终止程序。当然此处除了向命令行输出异常外还可以保存当前数据或者其他灾难处理措施,但因为程序已经发生异常了,可能有些数据已经损坏,读取可能导致其他问题,要小心哦!

另外winform程序的话,对Application对象也要做一些设置,具体可以参考微软文档中的例子:https://msdn.microsoft.com/zh-cn/library/ms157905(v=vs.110).aspx

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:C#基础-关于用json给控制台程序传值的坑

下一篇:我为NET狂~群福利:逆天书库