在c#开发中总会遇见无法预料并且无法处理的异常(unhandled Exception),可以调用Appliaction.ThreadExcetpion()事件来处理这类异常。
static void Main()
{
Application.ThreadException +=new ThreadExceptionEventHandler(Application_ThreadException);
Application.Run(new Form1());
}
private static void Application_ThreadException(object sender,ThreadExceptionEventArgs e)
{
MessageBox.Show(e.Exception.ToString());
}
这种方法使用非常简单,而且效率很高,开发者可以很方便的添加异常处理的其他功能
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
但是这种方法也有局限性,就是仅能处理主线程中未处理的异常,要是unhandled exception发生在别的线程上,上述方法将无法处理。这时可以使用AppDomain.UnhandledException替代Application.ThreadException来处理这类情况
在这种情况下,别的工作线程的中异常还是得通过主线程来进行调用,通过主线程调用工作线程中异常的具休实现可以通过首先判断控件的InvokeRequired属性,当其为true时,再调用主线程的控件的invoke方法来调用它。
这篇文章就是转博客园里一个高人的,可惜忘了地址了,不好意思,希望作者看到勿怪!!!