java核心技术——异常

 

error和runtimeExcption是不受查异常(unchecked exception)

throws子句用来抛出不受查异常,throws子句定义的契约非常严格——我们只能抛出在throws子句中声明过的检查型异常,一个方法没有throws子句并不意味着它不能抛出任何异常:这仅仅意味着不能抛出检查型异常。

其余为受查异常(checked exception)

受查异常表示的情形是:虽然这种情况是异常的,但是一定程度上它的发生是可以预计的,而且一旦这种情况确实发生了,就可以以某种方式来处理。要使这种异常能够被检查到,必须标明这种异常的存在,而且要确保方法的调用者会以某种方式来处理异常,或者至少会有意识的选择忽略它。

不受查异常的运行时表示的情形是:大体上来说,它反映了我们程序运行时逻辑中的错误,而且不能再运行时得到恢复。

构建一个新的异常类

如:

public class NoSuchAttributeException extends Exception{

         public final String attrname;

         public NoSuchAttributeException(String name){

                   super(“No attribute named \””+name+”\”found”);

         }

}

定义异常类的惯用法时至少提供以下4种形式或其变体形式的构造器,以处理异常特有的数据:

throw抛出异常

public void replaceValue(String name,Object newValue)throws NoSuchAttributeException{

}

一旦发生了异常,异常发生点之后的动作就都不会发生了,这时将要发生的动作要么是在finally块中,要么是在捕获这个异常的catch块中。

同步异常:throw语句可以产生同步异常,这种异常是作为执行某条特定指令的结果而直接发生的。

异步异常:可以发生在任何时候,与正在被执行的指令无关。异步异常只能以两种特定的形式发生,第一种是java虚拟机的内部错误,是在执行Java虚拟机的内部指令而不是程序的指令时引发的;第二种机制是使用被弃用的Thread.stop方法,或者是没有被弃用的Java虚拟机工具接口中的stopThread方法。

try、catch和finally

 

进入final子句的原因:

1)         try代码正常结束

2)         try代码执行了诸如return这样的控制流语句

3)         try块中执行的代码抛出了异常

猜你喜欢

转载自www.cnblogs.com/hy-ning/p/8989633.html