日期:2014-05-17  浏览次数:20753 次

CSharp类的全局异常
WinForm有他自带的全局异常
我自己定义的类如何实现这种效果
例如我的类

class temp{
    public void say1(){throw new Exception("say1Exception");}
    public void say2(){throw new Exception("say2Exception");}
}

我想实现的效果是
当say1异常的时候 我能够捕获到这个Exception的对象
但是我又不想每一个方法都写Try-Catch
就像要一个类似WinForm全局异常的方式来实现

------解决方案--------------------
引用:
...
但是我又不想每一个方法都写Try-Catch
...

"每一个方法都写Try-Catch"不是好的编程方式,因为过多的Try-Catch会掩盖错误,常常使问题积累到全盘崩溃的结局。

另外,全局异常处理不是万用灵药。“全局异常”处理中,真正能用的只有写异常记录,然后让程序退出。理由是,全局处理中没有足够的信息来理解异常,而不能正确理解异常,就意味着不能正确地处理异常。如果不让程序退出,同样会使问题积累到全盘崩溃。

因此,你可以使用AppDomain.UnhandledException事件来记录异常,而AppDomain.UnhandledException的事件处理不能阻止程序退出。
------解决方案--------------------
http://msdn.microsoft.com/zh-cn/library/vstudio/system.appdomain.unhandledexception.aspx