<wp:post_date>2008-11-10 13:35:48</wp:post_date>
1、异常分类
a)按照java本身的设计,有三种可抛出的结构,即checked exception, runtime exception, error,注意这里只是一些分类名称,不代表类名称。
b)其中checked exception和runtime exception(unchecked exception)是由于程序本身的设计或者实现问题引发的,是一种异常,所有的异常都是Exception的子类。而error是由于系统资源不足、约束失败或者JVM的运行环境出现故障导致的,一旦发生,系统将不能恢复,所以它不是一种异常,这里不作讨论。
c)所有的Exception和Error都继承自Throwable类,都需要是可抛出的、可记录的,下面是一个简单的UML示意图(没有全部画出)
其中RuntimeException及其子类(这里没有画出)都是属于unchecked exception,运行时由JVM抛出不需要开发人员捕获、处理。其他的Exception及其子类都属于checked exception,这些异常往往是由开发人员自己实现的,明确借助关键字throws显式抛出、try…catch模块捕获处理的。
2、异常的使用和处理
a)未被检测的异常(unchecked exception),不需要开发人员管理,这种运行的异常会有JVM自行抛出;也不需要开发人员捕获处理。因为unchecked exception往往是在不可恢复的情形下抛出的,继续执行下去没有必要,而且JVM会自动的停止线程的执行,给出一个适当的异常信息。
b)被检测的异常(checked exception),需要开发人员明确使用throws抛出、try…catch模块捕获处理的。这里会有几种情况需要注意一下。
i.一般情况下:catch语句中做相应的处理,如打日志等等。
ii.异常转译:如果高层的实现应该捕获低层的异常,那么低层就应该抛出一个高层可以解释的异常,举个AbstractSequetialList(是List的骨架实现)的例子,代码如下
//return the element at the specified position in the list
public Object get( int index ){
ListIterator i = ListIterator( index );
try{
return i.next();
}catch( NoSuchElementException e ){
throw new IndexOutOfBoundsException( “index” + index );
}
}
iii.异常链接:底层的异常被高层异常保存起来,并且高层异常提供一个公有的访问接口来获得该底层异常,这样对调试更加有利。Jdk1.4可以如下实现
HigherLevelException( Throwable t ){
super(t);
}
c)慎用checked exception,如果抛出的被检测异常是唯一的,比如说CloneNotSupportedException这是只有实现了Cloneable接口的类才有的异常。可以想象如果所有异常你都抛出的话,对于API的调用者来说处理这些异常的try…catch模块是多么大,维护成本是多么高!所以这时候就需要把某些checked exception以unchecked exception的形式抛出,只要地方合适。
3、几种常见的异常及其含义
IllegalArgumentException 参数的值不合适
IllegalStateException 对于这个方法,对象的状态不合适
NullPointerException 在Null被禁止的情况下使用Null值对象或者引用
IndexOutOfBoundsException 下标越界
ConcurrentModificationException 禁止并发修改的时,对象检测到并发修改
UnsupportedOperationException 对象不支持客户请求
相关推荐
java异常总结java异常总结java异常总结java异常总结java异常总结java异常总结
Java异常处理总结
java 异常种类总结【转】.docx java 异常种类总结【转】.docx java 异常种类总结【转】.docx
java常见异常,总结java常见异常解释,很全面,解释也很周到
java异常总结.pdf
java异常的终极总结 包括非常全面的异常总结 你值得下载!
总结的常见的JAVA异常。没有涵盖全部异常,但是包括了最常见的饿18中异常
Java 异常处理的误区和经验总结 本资料共包含以下附件: Java 异常处理的误区和经验总结.pdf
Java基础编程异常总结
Java常见异常总结,不用在害怕自己没见过的异常了
个人关于java异常处理的思维导图总结。0积分下载。如果认为有帮助,请关注点赞,日后还有更多免费资源。敬请关注。
Java异常处理总结.pdf
当一个应用试图通过Java的new操作符构造一个抽象类或者接口时抛出该异常. java.lang.InternalError 内部错误。用于指示Java虚拟机发生了内部错误。 java.lang.LinkageError 链接错误。该错误及其所有子类指示某个类...
摘要使用Java异常的人很多,但能合理使用的却不多,Java异常处理设计是一个冷门的话题,但好的异常设计会让程序有质的变化,所以本文从各个方面分析便总结了,在J