课程名:Windows应用程序开发入门到精通七:优化.NET异常处理

 

1.多个catch块的情况时会过滤异常,先截获具体的异常,再截获一般的异常,并且这是从编译器的层次就支持的。


2.
应该从系统异常(System.ApplicationException)派生自己的具体异常,从而为特定的应用程序提供更好的支持。


3.
异常处理技术:1)记录异常:在文件中记录异常;在数据库中记录;在Eventlog中记录。2)发email等信息来通知异常。总之,要以用户友好的方式通知异常的发生。

4.使用Application对象中的ThreadException属性来设置一个delegate来捕获所有未处理的主线程中出现的异常,但并不能处理你自己创建的工作进程中出现的异常。

WebCast听课录(10)public static void Main(string[] args)

5,必须考虑在工作线程中出现的异常,在线程的入口使用try-catch,并且使用delegate等方式将异常通知给主线程,此外,线程之间要访问对方的界面成员时,应该通过BeginInvoke()方法来进行。


WebCast听课录(10)        public delegate void DoneDelegate(bool Stopped);
WebCast听课录(10)        
public delegate void
WebCast听课录(10)            WorkerThreadExceptionHandlerDelegate(Exception e);
WebCast听课录(10)        
void WorkerThreadExceptionHandler(Exception e)

6,在构造函数中不要加try-catch,因为这会把异常再抛给外部方法,还不如不处理,直接抛给外部好了。

7,异常处理程序块采用的是publisher/subscriber设计模式,在工程中添加对它的引用,并引入名称空间Microsoft.ApplicationBlocks.ExceptionManagement就可以使用ExceptionManager.Publish()来进行异常的发布。在app.config中可以对异常管理进行启/停,还可以添加自己的异常处理模块。

WebCast听课录(10)<?xml version="1.0" encoding="utf-8" ?>
WebCast听课录(10)
<configuration>
WebCast听课录(10)    
<configSections>
WebCast听课录(10)        
<section name="exceptionManagement" 
WebCast听课录(10)                type
="Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManagerSectionHandler,Microsoft.ApplicationBlocks.ExceptionManagement" />
WebCast听课录(10)    
</configSections>
WebCast听课录(10)
WebCast听课录(10)    
<exceptionManagement mode="on">        
WebCast听课录(10)        
<publisher mode="on" assembly="Microsoft.ApplicationBlocks.ExceptionManagement" 
WebCast听课录(10)          type
="Microsoft.ApplicationBlocks.ExceptionManagement.DefaultPublisher" 
WebCast听课录(10)          logname
="Northwind Exceptions Log" 
WebCast听课录(10)          applicationname
="Northwind Traders Orders" />
WebCast听课录(10)    
</exceptionManagement>
WebCast听课录(10)
WebCast听课录(10)
</configuration>
WebCast听课录(10)

WebCast听课录(10)    public static void MainUIThreadExceptionHandler(object
WebCast听课录(10)            sender, ThreadExceptionEventArgs t)

可以在事件查看器中看到异常已经发布进来了:

WebCast听课录(10)

相关文章: