• Winform 全局异常捕获


    初学 Winform 时,相信很多人都遇到过自己的程序在运行中出现了没有捕获的异常,导致程序退出的问题,在这种情况下,程序往往会弹出一个很不友好的信息框,然后强行退出。

    程序出现了未捕获的异常,系统便认为它无法再继续工作了,所以强行结束了程序,这也是很正常的行为。但如果我们想要给用户显示一个比较友好的信息框,或者记录上传错误日志等等,那么就需要添加全局异常处理程序。

    要为 Winform 程序添加全局异常处理程序,需要对 UI 线程和其他线程分别处理,代码如下:

    static class Program
    {
        /// 
        /// 应用程序的主入口点。
        /// 
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            // 设置 UI 线程异常处理程序,必须在 Application.Run() 方法之前添加
            Application.ThreadException += OnThreadException;
            // 要捕获其他线程的异常,必须先调用 SetUnhandledExceptionMode() 方法指示程序如何处理异常
            Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
            // 设置其他线程异常处理程序,需要注意的是,此异常处理程序并不能阻止应用被终止
            AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;
            Application.Run(new MainForm());
        }
        private static void OnThreadException(object sender, ThreadExceptionEventArgs e)
        {
            // UI 线程异常处理,根据需要可以选择退出或不退出应用
            // ShowError((e.ExceptionObject as Exception).Message);
        }
        private static void OnUnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            // 其他线程异常处理,此方法结束后应用会被强制退出
            // ShowError(e.Exception.Message);
        }
    }
  • 相关阅读:
    ubuntu 安装ftp,配置,和java调用
    ubuntu 安装ftp nginx tomcat,mysql
    idea安装插件
    使用spring boot,gradle,idea,js,html创建一个小的前后端程序
    使用浏览器,调试js代码
    spring boot 使用静态资源
    word使用
    latex 转word
    qsv转mp4
    qsv转换为mp4,下载腾讯视频为MP4格式
  • 原文地址:https://www.cnblogs.com/andorxor/p/9347686.html
Copyright © 2020-2023  润新知