LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# WinForm捕获全局异常(捕获未处理的异常)

admin
2023年9月4日 11:56 本文热度 402

许多公司的项目都缺少异常处理模块,我们也是。经常会出现这种情况,用户在UI界面操作,就直接跳出堆栈调用的异常信息对话框,老板看到那叫一个火啊!你们的代码怎么天天出现乱码。呵呵!这就是没有异常捕获处理导致的,现在许多人写代码都没意识处理异常,只要实现功能就好,我的许多组员也是如此。

项目刚接手,所以打算做一个异常全局捕获,统一处理的模式,采用具体详细信息的对话框提醒与日志文件保存方式。以下是根据网上找的C#winform全局异常捕获做了点修改。(等项目异常处理全部完成后,将心得体会做个记录,此处暂对全局异常捕获做个记录)

1.  static class Program

2.      {

3.          /// <summary>

4.          /// 应用程序的主入口点。

5.          /// </summary>

6.          [STAThread]

7.          static void Main()

8.          {

9.              try

10.            {

11.                //设置应用程序处理异常方式:ThreadException处理

12.                Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

13.                //处理UI线程异常

14.                Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);

15.                //处理非UI线程异常

16.                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

17.

18.                #region 应用程序的主入口点

19.                Application.EnableVisualStyles();

20.                Application.SetCompatibleTextRenderingDefault(false);

21.                Application.Run(new Form1());

22.                #endregion

23.            }

24.            catch (Exception ex)

25.            {

26.                string str = GetExceptionMsg(ex,string.Empty);

27.                MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);

28.            }

29.        }

30.

31.

32.        static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)

33.        {

34.            string str = GetExceptionMsg(e.Exception, e.ToString());

35.            MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);

36.            //LogManager.WriteLog(str);

37.        }

38.

39.        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)

40.        {

41.            string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString());

42.            MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);

43.            //LogManager.WriteLog(str);

44.        }

45.

46.        /// <summary>

47.        /// 生成自定义异常消息

48.        /// </summary>

49.        /// <param name="ex">异常对象</param>

50.        /// <param name="backStr">备用异常消息:当exnull时有效</param>

51.        /// <returns>异常字符串文本</returns>

52.        static string GetExceptionMsg(Exception ex,string backStr)

53.        {

54.            StringBuilder sb = new StringBuilder();

55.            sb.AppendLine("****************************异常文本****************************");

56.            sb.AppendLine("【出现时间】:" + DateTime.Now.ToString());

57.            if (ex != null)

58.            {               

59.                sb.AppendLine("【异常类型】:" + ex.GetType().Name);

60.                sb.AppendLine("【异常信息】:" + ex.Message);

61.                sb.AppendLine("【堆栈调用】:" + ex.StackTrace);

62.            }

63.            else

64.            {

65.                sb.AppendLine("【未处理异常】:" + backStr);

66.            }

67.            sb.AppendLine("***************************************************************");

68.            return sb.ToString();

69.        }

70.    }


该文章在 2023/9/4 11:57:30 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved