用 catch 捕获异常后程序会继续执行,如果一个异常被抛出至到被 catch 程序继续执行,
或者被抛出 main,printTrace。程序继续执行的位置是异常被catch的地方。所有初看起来
在catch后的语句和finally里的语句没什么区别,在catch后都会执行。这里要强调的是
finally中的语句是一定会执行的,在下面的几种情况中finally的语句会执行而catch后的
语句不会执行
1.在catch中又抛出异常
2.try,catch,finally在循环中,try块中使用 coninue 或 break
finally是在出现异常后必须要处理的事情,而catch后的语句是认为程序已经从错误中恢复,
在正常状态下继续执行。
在一个 try 块之后可以后多个 catch 块,每块捕获不同的异常。当一个异常被抛出后,安
顺序找到匹配的为止
一个异常可以说明是谁引起了他(cause),可以用构造函数或initCause(Throwable e)
函数来说明。许多异常没有带 Throwable参数的构造函数,但 initCause 一定是可用的
继承于 RuntimeException 的异常是 unchecked,也就是说编译器不会强制程序捕获或向上
抛出异常,这类异常不强制用户处理,(当然你依然可以捕获这类异常,只要你愿意)。
这类异常会一路闯过 main。
复写父类的方法时,你只能抛出那些在父类方法中抛出的异常。这样一来子类方法抛出的异
常只能是父类方法抛出异常的子集。但这个约束对构造函数是无效的。注意:派生类的构造
函数不能捕获任何基类抛出的异常
posted on 2005-08-24 01:15
JBahamut 阅读(171)
评论(0) 编辑 收藏