异常处理程序学习笔记
时间:2010-11-19 来源:面壁居士
- 各种类型的异常最终都是由System.Exception派生而来
- 在可能引发异常的语句周围使用try块。
- 一旦try块中发生异常,控制流将跳转到第一个关联的异常处理程序。(无论该处理程序存在于调用堆栈中的什么位置)。在C#中,catch关键字用于定义异常处理程序
- 如果给定异常没有异常处理程序,则程序将停止执行,并显示一条错误消息
- 除非您可以处理某个异常并使应用程序处于已知状态,否则请不要捕捉该异常。如果捕捉System.Exception,请在Catch块的某位使用Throw关键字再次引发该异常。
- 如果catch块定义了一个异常变量,则可以用它获取有关所发生异常类型的更多信息。
- 程序可以使用throw关键字显示地引发异常。
- 异常对象包含有关错误的详细信息,比如调用堆栈的状态以及有关错误的文本说明
- 即使发生异常也会执行finally块中的代码,使用finally块释放资源,例如,关闭try块中打开的任何流火文件。
- .Net Framework中的托管异常时凭借Win32结构化异常处理机制实现的。
异常是报告错误的标准机制。应用程序和库不使用返回代码来传递错误信息。异常的采用增进了框架设计的一致性,允许无返回类型的成员(如构造函数)报告错误。异常还允许程序处理错误或者根据需要终止程序。
异常设计原则(来源:http://msdn.microsoft.com/zh-cn/library/ms229014(v=VS.90).aspx)
运行库实现的异常处理具有以下特点:(http://msdn.microsoft.com/zh-cn/library/5b2yeyab(v=VS.90).aspx)
处理异常时不用考虑生成异常的语言或处理异常的语言
异常处理时不要求任何特定的语言语法,而是允许每种语言定义自己的语法。
允许跨进程甚至跨计算机边界引发异常。
运行库德异常处理比基于Windows的C++错误处理更快
非托管代码可以同时包含C++样式的SEH异常和基于COM的HRESULT
相关阅读 更多 +