启动的时候在Main中写Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); 然后在Application_ThreadException里面统一处理一些异常
我在程度入口点加入代码: BaseFrame.ThreadExceptionHandler ErrHandler = new BaseFrame.ThreadExceptionHandler(); Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(ErrHandler.Application_ThreadException); //错误处理类。 namespace BaseFrame { public class ThreadExceptionHandler { public void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) { MyMessageBox.ShowWarning("捉到你啦"); } } } 竟然不起作用,~~
throw new ArgumentException("测试一下");自行抛出来成功捉住。有点明白了,应该是用了结构化异常处理给提前拦截了。
然后在Application_ThreadException里面统一处理一些异常
我在程度入口点加入代码:
BaseFrame.ThreadExceptionHandler ErrHandler = new BaseFrame.ThreadExceptionHandler();
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(ErrHandler.Application_ThreadException); //错误处理类。
namespace BaseFrame
{
public class ThreadExceptionHandler
{
public void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
MyMessageBox.ShowWarning("捉到你啦");
}
}
}
竟然不起作用,~~
using System.Collections.Generic;
using System.Windows.Forms;namespace CodingMouse.CMCSharpSDK.UI
{
static class Program
{
/// <summary>
/// 当前应用程序
/// </summary>
static string applicationName = "CMCSharpSDK"; /// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// 注册全局线程异常处理事件侦听
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Application.Run(new Forms.frmLogin(applicationName));
//Application.Run(new Forms.frmConnectionConfig());
} /// <summary>
/// 全局线程异常处理事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
// 显示全局异常提示
Messagebox.Show(ex.message);
}
}
}
Messagebox.Show(ex.message);
这行有问题,提示错误 1 当前上下文中不存在名称“Messagebox”
错误 2 当前上下文中不存在名称“ex”请帮忙!!!
static void Main()
{
ThreadExceptionHandler handler = new ThreadExceptionHandler();
Application.ThreadException += new ThreadExceptionEventHandler(handler.Application_ThreadException);
…………} internal class ThreadExceptionHandler
{
//实现错误异常事件
public void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
try
{
//如果用户单击"Abort"则退出应用程序
DialogResult result = ShowThreadExceptionDialog(e.Exception);
if (result == DialogResult.Abort)
{
Application.Exit();
}
}
catch
{
try
{
MessageBox.Show("严重错误", "严重错误", MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
finally
{
Application.Exit();
}
}
}
private DialogResult ShowThreadExceptionDialog(Exception e)
{
string errorMsg = "错误信息:\t\t" + e.Message + "\t\t" + e.GetType() + "\t\t" + e.StackTrace;
return MessageBox.Show(errorMsg, "Application Error", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop);
}
}