C#中全局处理异常方式
https://www.cnblogs.com/YYkun/p/8952924.html
using
System;
using
System.Configuration;
using
System.Text;
using
System.Windows.Forms;
using
ZB.QueueSys.Common;
namespace
ZB.QueueSys
{
static
class
Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static
void
Main()
{
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
//处理UI线程异常
Application.ThreadException +=
new
System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
//处理非UI线程异常
AppDomain.CurrentDomain.UnhandledException +=
new
UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(
false
);
//数据库类型
DBHelper.Instance.DBType =
int
.Parse(ConfigurationManager.AppSettings[
"DBType"
]);
//数据库连接串
DBHelper.Instance.ConnectionStr = ConfigurationManager.ConnectionStrings[
"DBStr"
].ConnectionString;
Application.Run(
new
MainForm());
//Application.Run(new QueueForm());
}
private
static
void
CurrentDomain_UnhandledException(
object
sender, UnhandledExceptionEventArgs e)
{
string
str = GetExceptionMsg(e.ExceptionObject
as
Exception, e.ToString());
LogHelper.Instance.SaveText(str);
Exception error = e.ExceptionObject
as
Exception;
MessageBox.Show(error.Message,
"系统异常提示信息"
, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
private
static
void
Application_ThreadException(
object
sender, System.Threading.ThreadExceptionEventArgs e)
{
string
str = GetExceptionMsg(e.Exception, e.ToString());
LogHelper.Instance.SaveText(str);
MessageBox.Show(e.Exception.Message,
"系统异常提示信息"
, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
/// <summary>
/// 生成自定义异常消息
/// </summary>
/// <param name="ex">异常对象</param>
/// <param name="backStr">备用异常消息:当ex为null时有效</param>
/// <returns>异常字符串文本</returns>
private
static
string
GetExceptionMsg(Exception ex,
string
backStr)
{
StringBuilder sb =
new
StringBuilder();
sb.AppendLine(
"****************************异常文本****************************"
);
sb.AppendLine(
"【出现时间】:"
+ DateTime.Now.ToString(
"yyyy-MM-dd hh:mm:ss"
));
if
(ex !=
null
)
{
sb.AppendLine(
"【异常类型】:"
+ ex.GetType().Name);
sb.AppendLine(
"【异常信息】:"
+ ex.Message);
sb.AppendLine(
"【堆栈调用】:"
+ ex.StackTrace);
sb.AppendLine(
"【异常方法】:"
+ ex.TargetSite);
}
else
{
sb.AppendLine(
"【未处理异常】:"
+ backStr);
}
sb.AppendLine(
"***************************************************************"
);
return
sb.ToString();
}
}
}
原文地址:https://blog.csdn.net/zunguitiancheng/article/details/136303799
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!