Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >C# WinForm捕获全局异常

C# WinForm捕获全局异常

作者头像
跟着阿笨一起玩NET
发布于 2020-07-27 08:23:05
发布于 2020-07-27 08:23:05
1.2K00
代码可运行
举报
运行总次数:0
代码可运行

网上找的C# WinForm全局异常捕获方法,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            try
            {
                //设置应用程序处理异常方式:ThreadException处理
                Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
                //处理UI线程异常
                Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
                //处理非UI线程异常
                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

                #region 应用程序的主入口点
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
                #endregion
            }
            catch (Exception ex)
            {
                string str = GetExceptionMsg(ex,string.Empty);
                MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }


        static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
        {
            string str = GetExceptionMsg(e.Exception, e.ToString());
            MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //LogManager.WriteLog(str);
        }

        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString());
            MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //LogManager.WriteLog(str);
        }

        /// <summary>
        /// 生成自定义异常消息
        /// </summary>
        /// <param name="ex">异常对象</param>
        /// <param name="backStr">备用异常消息:当ex为null时有效</param>
        /// <returns>异常字符串文本</returns>
        static string GetExceptionMsg(Exception ex,string backStr)
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendLine("****************************异常文本****************************");
            sb.AppendLine("【出现时间】:" + DateTime.Now.ToString());
            if (ex != null)
            {                
                sb.AppendLine("【异常类型】:" + ex.GetType().Name);
                sb.AppendLine("【异常信息】:" + ex.Message);
                sb.AppendLine("【堆栈调用】:" + ex.StackTrace);
            }
            else
            {
                sb.AppendLine("【未处理异常】:" + backStr);
            }
            sb.AppendLine("***************************************************************");
            return sb.ToString();
        }
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Winform 全局异常捕获处理
我们在开发winform程序的时候经常需要处理异常,如果没处理好异常程序就会崩溃,影响用户体验。 所以防止程序在没处理到异常时能由一个全局的异常捕获处理,在winform的program文件里面我们可以添加全局异常捕获事件,然后处理异常。
SpringSun
2021/10/13
1.2K0
使用C#简单制作一个看门狗程序
在有些特殊项目中,软件可能是无人值守的,如果程序莫名其妙挂了或者进程被干掉了等等,这时开发一个看门狗程序是非常有必要的,它就像一只打不死的小强,只要程序非正常退出,它就能立即再次将被看护的程序启动起来。
沙漠尽头的狼
2022/11/29
9010
C#接入SMTP邮件服务
功能类已经写好了,每个方法对应有注释,不需要动,除非你要更改smtp服务器,默认QQ邮箱
JanYork_简昀
2022/03/29
7870
C#接入SMTP邮件服务
简单的winform学生管理系统Demo
明志德道
2023/10/21
2750
简单的winform学生管理系统Demo
C# 常用操作类之五(统一消息提示类)
/// <summary>     /// MessageUtil 的摘要说明。     /// </summary>     public class MessageUtil     {         /// <summary>         /// 显示一般的提示信息         /// </summary>         /// <param name="message">提示信息</param>         public static DialogResult ShowTips(str
跟着阿笨一起玩NET
2018/09/18
7520
c# 自动更新程序
1、我这里用到了json,那么不能直接饮用json的dll文件,会出现更新时候占用的问题,可以使用fastjson的开源代码,放进来解决,你可以直接使用xml格式的返回内容,这样就不需要json了,这样更方便
冰封一夏
2020/11/24
1K0
c# 自动更新程序
winform总结5> winform程序开发注意事项
x86最大使用量2G[最大4G,系统保留1G,出于商业目的个人用户只可以使用2G],除去代码占用的空间实际的程序运行内存最大只能支持到1.4G-1.5G之间,实际测试的值,再大就会内存溢出。
FreeTimeWorker
2020/08/31
9550
C#编写影院售票系统(A project with a higher amount of gold )(2:相关代码)
此篇文章为项目代码,,,需要项目需求 ,思路分析与窗体效果请访问:http://www.cnblogs.com/lsy131479/p/8367304.html 项目类图: 影院类: using S
房上的猫
2018/03/14
1.5K0
C#编写影院售票系统(A project with a higher amount of gold )(2:相关代码)
WPF开发-全局异常捕获及日志记录
捕获异常 public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { RegisterEvents(); base.OnStartup(e); } private void RegisterEvents() { //Task线程内未捕获异常处理事件 TaskScheduler.UnobservedTaskE
码客说
2021/12/10
1.8K1
C#实现简易XML阅读器(含源文件和exe文件)
本程序的主要目的是便于阅读XML文件。在网上复制一些XML文本时,常常出现格式错误,更有甚者,整个文本就一行,一行有几百个字符。这些奇奇怪怪的格式大大增加了理解难度,本程序将模仿记事本,提供基础的文件读写,编辑功能,并在此基础上增加了格式对齐和高亮功能。
DearXuan
2022/01/19
8310
C#实现简易XML阅读器(含源文件和exe文件)
.NET连接SAP系统专题:C#获取RFC中自定义的异常(四)
    有的时候我们需要在RFC中抛出一些自定义的异常,比如输入一个不存在的品号,我们需要抛出一个异常,告知用户品号不存在。有一个笨笨的做法就是通过返回值来判断,但是这样不灵活,同时也会因为品号不存在而继续之行RFC。如果我们能自己抛出异常,程序自动停止执行RFC,那将是两全其美!
SAP梦心
2022/05/10
1.3K0
.NET连接SAP系统专题:C#获取RFC中自定义的异常(四)
【Unity3D】Unity3d 与串口的通信程序的开发,软件硬件结合
串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。(至于再详细,自己百度)
恬静的小魔龙
2020/03/11
2.6K0
【Unity3D】Unity3d 与串口的通信程序的开发,软件硬件结合
C#软件注册与注册机
https://www.cnblogs.com/hanzhaoxin/archive/2013/01/04/2844191.html
zls365
2021/03/16
7820
WinForm 自动更新升级程序开发指南
在软件开发过程中,为用户提供自动更新升级功能是非常重要的。对于 WinForm 应用程序而言,自动更新机制可以让用户及时获得软件的最新功能和修复已知问题,提升用户体验。本文将详细介绍如何为 WinForm 应用程序开发一个自动更新升级程序。
郑子铭
2025/03/28
350
WinForm 自动更新升级程序开发指南
“Unity开发也能跟硬件联动”--快来看看吧(串口通信)
串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。(至于再详细,自己百度)
恬静的小魔龙
2022/08/07
1.9K0
“Unity开发也能跟硬件联动”--快来看看吧(串口通信)
我的WCF之旅(6):在Winform Application中调用Duplex Service出现TimeoutException的原因和解决方案
几个星期之前写了一篇关于如何通过WCF进行 双向通信的文章([原创]我的WCF之旅(3):在WCF中实现双向通信(Bi-directional Communication) ),在文章中我提供了一个如果在Console Application 调用Duplex WCF Service的Sample。前几天有个网友在上面留言说,在没有做任何改动得情况下,把 作为Client的Console Application 换成Winform Application,运行程序的时候总是出现Timeout的错误。我觉得这
蒋金楠
2018/01/16
6100
我的WCF之旅(6):在Winform Application中调用Duplex Service出现TimeoutException的原因和解决方案
电脑如何获取你发来的数据?
本设计的主要功能其实是获取RFID的卡号,并进行鉴别。推而广之,可以用来获取单片机发来的数据,并进行检验是否符合要求。
跋扈洋
2022/01/20
1.4K0
电脑如何获取你发来的数据?
C# excel文件导入导出
在C#交流群里,看到很多小伙伴在excel数据导入导出到C#界面上存在疑惑,所以今天专门做了这个主题,希望大家有所收获!
zls365
2020/08/19
3.8K0
C# excel文件导入导出
C# 调用百度AI接口实现文字识别
今天心血来潮做了个识别图片文字的demo,现在文字识别技术已经比较成熟了,而且还有可以调用的公共接口。
zls365
2020/08/19
2.2K0
C# 调用百度AI接口实现文字识别
C#如何快速高效地导出大量数据?
本文转载:http://www.cnblogs.com/herbert/archive/2010/07/28/1787095.html
跟着阿笨一起玩NET
2018/09/18
2.2K0
推荐阅读
相关推荐
Winform 全局异常捕获处理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验