zoukankan      html  css  js  c++  java
  • winform捕获全局异常

    在winform中捕获全局异常,其中Application.ThreadException捕获UI线程异常,AppDomain.CurrentDomain.UnhandledException捕获应用程序域内的未处理异常(非UI线程异常),注意如果有一个以上的类似Application.Run(new Form1()) 还是会出现未捕获的异常。

    using System;
    using System.Windows.Forms;
    
    namespace WinFormCallAllException
    {
        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
                Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
    
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
                Application.Run(new Form2());
            }
    
            /// <summary>
            /// 处理应用程序域内的未处理异常(非UI线程异常)
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
            {
                MessageBox.Show("CurrentDomain_UnhandledException: 抱歉,您的操作没有能够完成,请再试一次或者联系软件提供商");
                LogUnhandledException(e.ExceptionObject);
            }
    
            /// <summary>
            /// 处理应用程序的未处理异常(UI线程异常)
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
            {
                MessageBox.Show("Application_ThreadException: 抱歉,您的操作没有能够完成,请再试一次或者联系软件提供商");
                LogUnhandledException(e.Exception);
            }
    
            static void LogUnhandledException(object exceptionobj)
            {
                //这里可以进一步地写日志
                Console.WriteLine(((Exception)exceptionobj).Message);
            }
    
        }
    }
    
    
  • 相关阅读:
    出现错误:代理服务器拒绝连接的解决方法
    ansible之模块 条件判断
    软件相关模块与ansible剧本
    ansible的应用
    Celery -----异步任务,定时任务,周期任务
    SQLAlchemy增删改查 一对多 多对多
    python是如何进行内存管理的?
    Django的模板层(1)
    1.Git安装
    6.case
  • 原文地址:https://www.cnblogs.com/AlexanderZhao/p/12878848.html
Copyright © 2011-2022 走看看