如果没有加 try catch ,但是报错了还想去捕捉这个错误信息,怎么做啊。
代码里面 try catch 并不是加的很完全,程序偶尔会自己关闭,有没有一个全局的可以捕捉错误信息的。
在程序关闭前捕捉到这个错误信息。
[解决办法]
如果是Web的话,可以用ExceptionFilter或者用Elmah
还有一种方式是VS中内置的
打开Debug菜单,Exceptions,选择你要Exception,打钩
还有就最差的方式,可以加一个大的Try Catch包围你代码……
[解决办法]
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.application.threadexception(v=vs.100).aspx
http://msdn.microsoft.com/zh-cn/library/system.windows.threading.dispatcher.unhandledexception(v=vs.100).aspx
http://msdn.microsoft.com/zh-cn/library/system.appdomain.unhandledexception(v=vs.100).aspx
[解决办法]
如果是严重的进程崩溃异常,管他什么线程不线程的?你写多少语句都捕获不了。
而你在进程内用其它代码可以捕获的异常,删掉你多余的“其他代码”,这代码当然就可以捕获。
[解决办法]
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
try
{
//处理未经处理的异常
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
//捕获应用程序已发生的异常
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
//捕获未经处理的异常对象
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Frm_Login());
}
catch (Exception ex)
{
try
{
if (MessageBox.Show("程序执行期间发生异常,请检查输入数据是否合法,或者联系管理员!", "警告", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error) == DialogResult.Abort)
{
Application.Exit();
}
}
catch
{
MessageBox.Show("系统出现严重错误,请终止当前操作,并及时联系管理员。对此给您带来的不便,我深表歉意!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
try
{
Exception error = e.Exception as Exception;
if (MessageBox.Show("程序执行期间发生异常,请检查输入数据是否合法,或者联系管理员!!", "警告", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error) == DialogResult.Abort)
{
Application.Exit();
}
}
catch
{
MessageBox.Show("系统出现严重错误,请终止当前操作,并及时联系管理员。对此给您带来的不便,我深表歉意!!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
try
{
Exception error = e.ExceptionObject as Exception;
//MessageShowInfo.Show("警告", "程序执行期间发生异常,请检查输入数据是否合法,或者联系管理员!");
if (MessageBox.Show("程序执行期间发生异常,请检查输入数据是否合法,或者联系管理员!!!", "警告", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error) == DialogResult.Abort)
{
Application.Exit();
}
}
catch
{
MessageBox.Show("系统出现严重错误,请终止当前操作,并及时联系管理员。对此给您带来的不便,我深表歉意!!!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
}
}
这个可以参考一下 写在 Program.cs这个文件中的
[解决办法]
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.UnhandledException += new UnhandledExceptionEventHandler(。。。);