当前位置: 代码迷 >> C# >> c# winform 统一异常处理
  详细解决方案

c# winform 统一异常处理

热度:85   发布时间:2016-05-05 05:13:09.0
c# winform 统一错误处理
写了2个非窗体类,里面有很多方法,很多if语句,有些失败的情况想记录下来,最后在UI上给用户提示。或者类似这种错误,一般大家是怎么统一处理的?
------解决思路----------------------
Application.ThreadException +=new ThreadExceptionEventHandler(Application_ThreadException);

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

------解决思路----------------------
引用:
可否说的具体点...这是自定义异常吧?没使用过这个

Quote: 引用:

Application.ThreadException +=new ThreadExceptionEventHandler(Application_ThreadException);

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);


这个不是自定义异常, Application.ThreadException和AppDomain.CurrentDomain.UnhandledException是event,你订阅这些event,当未捕获异常发生时,会调用你指定的函数(分别是Application_ThreadException和CurrentDomain_UnhandledException)
各自的msdn上的解释:
Application.ThreadException
http://msdn.microsoft.com/en-us/library/system.windows.forms.application.threadexception%28v=vs.110%29.aspx

AppDomain.UnhandledException
http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception(v=vs.110).aspx

两者的区别:
What's the difference between Application.ThreadException and AppDomain.CurrentDomain.UnhandledException?
http://stackoverflow.com/questions/2014562/whats-the-difference-between-application-threadexception-and-appdomain-currentd
------解决思路----------------------
引用:
写了2个非窗体类,里面有很多方法,很多if语句,有些失败的情况想记录下来,最后在UI上给用户提示。或者类似这种错误,一般大家是怎么统一处理的?

使用回调函数,无论什么方法,统一在一处调用执行
方法里面不需要捕捉异常,使用回调函数封装的方法里面进行try cath,这个方法返回bool类型并且out处理异常信息
out处理的异常在UI展现
  相关解决方案