WinForm C#全局错误捕捉处理【整理】

 1   static class Program
 2     {
 3         /// <summary>
 4         /// 应用程序的主入口点。
 5         /// </summary>
 6         [STAThread]
 7         static void Main()
 8         {
 9             try
10             {
11
12                 //添加事件处理程序未捕获的异常
13                 Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
14                 //添加事件处理UI线程异常
15                 Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
16                 //添加事件处理非UI线程异常
17                 AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
18
19
20                 Application.EnableVisualStyles();
21                 Application.SetCompatibleTextRenderingDefault(false);
22                 Application.Run(new FrmActivity());
23             }
24             catch (Exception ex)
25             {
26                 string str = "";
27                 string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
28
29                 if (ex != null)
30                 {
31                     str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",
32                          ex.GetType().Name, ex.Message, ex.StackTrace);
33                 }
34                 else
35                 {
36                     str = string.Format("应用程序线程错误:{0}", ex);
37                 }
38
39                 //写日志
40                 WriteLog.WriteErrLog(str);
41                 MessageBox.Show("发生致命错误,请及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
42             }
43
44         }
45
46         /// <summary>
47         ///这就是我们要在发生未处理异常时处理的方法,做法很多,可以是把出错详细信息记录到文本、数据库,发送出错邮件到作者信箱或出错后重新初始化等等
48         /// </summary>
49         /// <param name="sender"></param>
50         /// <param name="e"></param>
51         static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
52         {
53
54             string str = "";
55             string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
56             Exception error = e.Exception as Exception;
57             if (error != null)
58             {
59                 str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",
60                      error.GetType().Name, error.Message, error.StackTrace);
61             }
62             else
63             {
64                 str = string.Format("应用程序线程错误:{0}", e);
65             }
66             //写日志
67             WriteLog.WriteErrLog(str);
68             MessageBox.Show("发生致命错误,请及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
69         }
70         /// <summary>
71         ///  ‘ 处理UI异常
72         /// </summary>
73         /// <param name="sender"></param>
74         /// <param name="e"></param>
75         static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
76         {
77             string str = "";
78             Exception error = e.ExceptionObject as Exception;
79             string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
80             if (error != null)
81             {
82                 str = string.Format(strDateInfo + "Application UnhandledException:{0};\n\r堆栈信息:{1}", error.Message, error.StackTrace);
83             }
84             else
85             {
86                 str = string.Format("Application UnhandledError:{0}", e);
87             }
88             //写日志
89             WriteLog.WriteErrLog(str);
90             MessageBox.Show("发生致命错误,请停止当前操作并及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
91         }
92
93     }
时间: 2024-11-10 19:07:30

WinForm C#全局错误捕捉处理【整理】的相关文章

Android全局异常捕捉

// 定义自定义捕捉 package com.xiaosw.test; import java.io.File; import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.PrintWriter; import java.io.StringWriter; import java.io.Writer; import java.lang.Thread.UncaughtExceptionHandler;

VS编译duilib项目时候的错误解决方法整理

@1:找不到Riched20.lib 用everything等软件搜索下磁盘,找到所在的目录添加到vs的库目录即可,我得是C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib:其他的vs版本可能不一样,自行搜索 @2: "IDispatchEx": 重定义:不同的基类型 点击打开链接 UIFlash.h行: #import "..\Utils/Flash11.tlb" raw_interfaces_only,

PHP全局错误处理

本文目的 PHP的全局错误处理,在开发项目的时候很有用,可以帮助开发者快速定位一些问题,提高工作效率.默认情况下,全局错误会直接输出,但是最近开发时使用的一个框架库对全局错误处理进行了设定,导致很多错误信息没有输出,在定位问题上有一定的耗时.所以,研究了一下此库的实现,发现它设定了error_reporting和set_error_handler,导致此现象.现在记录一下这两个函数的用法,作为备忘录. 背景 PHP没有类型检测,开发人员比较容易输入错误单词,引起致命错误,最终导致脚本停止执行.如

winform接收全局的快捷键

public class NativeWIN32 { public NativeWIN32() { } /* ------- using WIN32 Windows API in a C# application ------- */ [DllImport("user32.dll", CharSet = CharSet.Auto)] static public extern IntPtr GetForegroundWindow(); // [StructLayout(LayoutKin

用VSCode开发一个asp.net core 2.0+angular 5项目(4): Angular5全局错误处理

第一部分: http://www.cnblogs.com/cgzl/p/8478993.html 第二部分: http://www.cnblogs.com/cgzl/p/8481825.html 第三部分: https://www.cnblogs.com/cgzl/p/8525541.html 这篇文章将介绍angular 5的全局错误处理. 需要使用到代码: https://pan.baidu.com/s/1F0KjbwVE8_Tzfwy69Alp-A angular 5 全局错误处理 参考文

ionic 调用restful API services时全局错误处理的实现 或自定义错误处理的实现

往往我们的ionic程序需要调用API Service. 比如天气,地图等等.当这些API Service 不稳定或者不可访问时,我们可以通过在注册一个自定义的ErrorHandler, 来处理此类错误. 1.   将自定义错误处理类作为provider,  也就是Service.   在终端使用命令: ionic g provider GlobalErrorHandler .  ionic generate 命令行定义可以参考此处 2.     实现GlobalErrorHandler, 完整

VBA 自动关闭 弹出的对话框 + VBA错误捕捉

自动关闭 Msgbox对话框: Private Declare Function MsgBoxEx Lib "user32" Alias "MessageBoxTimeoutA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As VbMsgBoxStyle, ByVal wlange As Long, ByVal dwTimeout As Lo

Java SpringBoot全局错误处理类,返回标准结果

package demo.utils; import com.alibaba.fastjson.JSON; import demo.controller.ProductController; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.web.bind.annotation.ExceptionHandler; impor

【Flask】 python学习第一章 - 3.0 正则转换和错误捕捉

3.1正则转换器定义 Class RegexConverter(BaseConverter): regex = "[0-9]{6}" app.url_map.converters["re"] = RegexConverter @app.route("/user/<re:user_id>") def index(): return "hello wolrd" from flask import Flask from