我想要一个普通的捕获所有错误,适用于所有函数。现在,我试着抓住每个单独的按钮点击特定事件。我需要为我的整个程序捕获所有错误,其中包括可以捕获我可能错过的任何个别异常的所有按钮单击。有人可以指出我正确的方向
我目前的代码:
private void Show_btn_Click(object sender, EventArgs e)
{
try
{
//do something
}
catch (Exception error)
{
outputLOG.Append(error.ToString());
{
}
private void Submit_btn_Click(object sender, EventArgs e)
{
try
{
//do something
}
catch (Exception error)
{
outputLOG.Append(error.ToString());
}
}
目标:我想抓住所有按钮以防万一我错过了个别例外
编辑:我正在使用winforms
答案 0 :(得分:0)
在输入应用程序的第一个表单之前添加这些行(通常在program.cs中的main方法中)
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
......
private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
string msg = e.Exception.Message;
if (e.Exception.InnerException != null)
{
msg = msg + "\r\nPrevious error:" + e.Exception.InnerException.Message;
}
msg = msg + "\r\n\r\nDo you wish to continue with the application?";
DialogResult dr = MessageBox.Show(msg, "Exception", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dr == DialogResult.No) Application.Exit();
}
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Exception ex = e.ExceptionObject as Exception;
if (ex != null)
{
string msg = ex.Message;
if (ex.InnerException != null)
{
msg = msg + "\r\nPrevious error :" + ex.InnerException.Message;
}
msg = msg + "\r\n\r\nIt is not possible to continue. Contact support service!";
MessageBox.Show(msg, "Fatal Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}