c#遇到未捕获异常后并自行处理后,如何屏蔽这个消息框:遇到问题需要关闭。我们对此引起的不便表示抱歉。
c#遇到未捕获异常后并自行处理后,还是会弹出这个讨厌的消息框:遇到问题需要关闭。我们对此引起的不便表示抱歉。
遇到未捕获异常后(如OutOfMemoryException),我们可能要让程序自己重启或写日志,如果弹出这个,等于要人工干预。装到服务器上的软件,要自行处理并恢复(如重启软件),让人工干预就太过分了。
在网上找了很多代码,都是无非是下面的样子:
http://code.iteye.com/blog/1306217
http://www.cnblogs.com/cgzwwy/archive/2008/08/31/1280597.html
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.application.setunhandledexceptionmode.aspx
http://blog.163.com/muyao520@126/blog/static/6955545620106148493899/
http://bbs.csdn.net/topics/320185539,这个人的问题也我一样。
http://weblogs.asp.net/bsimser/archive/2008/04/18/ui-exception-handling-vs-appdomain-exceptions.aspx,老外写的。也没有解决办法。
/// <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);
Application.Run(new Form1());
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
MessageBox.Show((e.ExceptionObject as Exception).Message);
}
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
MessageBox.Show(e.Exception.Message);
}
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
ThreadStart newThreadStart = new ThreadStart(newThread_Execute);
Thread newThread = new Thread(newThreadStart);
newThread.Start();
}
// The thread we start up to demonstrate non-UI exception handling.
void newThread_Execute()
{
throw new Exception("The method or operation is not implemented.");
}
}
}
[解决办法]
一时想不起来如何触发一个这样的异常,也就没法测试了
http://blog.csdn.net/qiqi5521/article/details/1911371
这篇文章提到用SetUnhandledExceptionFilter过滤器拦截异常处理
http://bbs.csdn.net/topics/60052571
27L介绍了如何在程序崩溃的时候屏蔽调试器窗口的弹出。