现在的位置: 首页 > 综合 > 正文

异常处理

2014年08月03日 ⁄ 综合 ⁄ 共 884字 ⁄ 字号 评论关闭

什么是异常?
程序运行时发生的错误。(错误的出现并不总是程序员人的原因,有时应用程序会因为最终用户或运行代码的环境改变而发生错误。比如:1.连接数据库时数据库服务器停电了;2.操作文件时文件没了、权限不足等;3.计算器用户输入的被除数是0;4.使用对象时对象为null;等等。)
.net为我们把“发现错误(try)”的代码与“处理错误(catch)”的代码分离开来。
异常处理的一般代码模式:
try{ …可能发生异常的代码… }catch{ …对异常的处理… }finally{ …无论是否发生异常、是否捕获异常都会执行的代码… }
try块:可能出问题的代码。当遇到异常时,后续代码不执行。
catch块:对异常的处理。记录日志(log4net),继续向上抛出等操作。(只有发生了异常,才会执行。)
finally块:代码清理、资源释放等。无论是否发生异常都会执行。

异常处理代码的其他几种形式:
try   →  多个catch   →   一个finally
try→(1个或多个catch),多个catch的顺序问题。没有finally。
try→finally(只能有一个),没有catch也可以。
注意点:
发生异常后,try块中,异常代码后的代码不会执行。
finally块中的代码,无论是否发生异常都会执行。
finally中不能写return语句。
try中有return语句,finally也会执行
即便没有catch,finally中的代码也会执行,但finally之后的代码则不会。
Exception ex 异常也是对象,封装了异常发生时的一些信息。
Exception 类主要属性:Message、StackTrace、InnerException(*)
扔出自己的异常,扔:throw,抓住:catch
建议:通过逻辑判断(if-else)减少异常发生的可能性!
在多级方法嵌套调用的时候,如果发生了异常,则会终止所有相关方法的调用,并且释放相关的资源。
 当程序遇到一个异常时,会立即停止所有栈上的方法调用,并让方法调用中的所有的局部变量都超出作用域,去查找对应的catch块。当多级方法调用时,很方便。

抱歉!评论已关闭.