【程序编程相关:彻底明白Java的IO系统(文摘)---】
【推荐阅读:jdbc系列之 ACCESS】【扩展信息:今天很开心,解开了关于JAVA中this】
用java在开发系统的时候,exception的处理往往是比较复杂的.如何处理开发中遇到的exception,如何将合理的异常信息呈现给客户是开发人员必须要考虑的问题.
关于exception的处理的文章在很多地方都可以看到,本文除了做一个总结之外,还将结合design by contract,jdk 1.4引入的assertion,以及如何用spring的aop处理exception做进一步的探讨.
exception的分类
从jdk的api中我们可以看到,java把异常分为了error与exception两大类,在exception中又分为checked exception与runtime exception.从系统开发的角度上,我们可以把exception分为:
· jvm异常.这种异常我们不应该捕捉,因为它的出现意味着一些比较严重的错误,比如outofmemoryerror,stackoverflowerror等;· 系统异常.大多数情况下,系统异常以runtimeexception的形式出现,比如nullpointerexception, arrayoutofboundsexception等,这时往往意味着我们的程序里面出现了bug;还有一种情况,例如我们没有办法通过jndi找到某个资源,也应该属于系统异常.系统异常的主要特点是,当我们遇到这种异常的时候,我们没有合适的办法处理,或者说我们不能已一个合理的方式告诉最终用户系统出现了什么错误.很难想象用户看到一个npe,并在界面上看到一堆stack trace是什么感觉.这种异常应该在单元测试以及集成测试的时候被检测到,在发布的时候应该尽可能不出现这样的问题;· 应用异常.这种异常是由我们的系统,或者第三方系统种抛出的异常,这些异常的出现对用户来说,可能是因为某个验证没有通过,某个操作的步骤出现错误等,比如插入数据库的时候出现主键重复的情况等.总之,这些异常的信息可以通过一个用户看的懂的方式显示给用户.
design by contract(dbc)
我们暂时把exception的处理放在一边,先看看design by contract的概念.
... 下一页