在一个try-catch语句中,当有多个catch块的时候,它们被顺序检查
在检查过程中,注意异常的匹配关系是很重要的 当一个异常被抛出,与它相匹配的catch块被执行,其它的catch块,就被忽略掉不再执行
如果没有catch块匹配抛出的异常,那么系统会在堆栈中搜索,找到一个匹配的捕获方法。
如果仍然没有找到,那么系统将处理抛出异常
---------------------------------------
什么叫异常和catch块相匹配:
1、抛出的异常和捕捉的异常是同一个类
2、抛出的异常是捕捉异常的子类
3、多个catch块中 如果捕捉的异常之间有继承关系 那么不要把父类放在子类之前(这种做法也不被允许)
4、尽量不要偷懒 使用具体异常类而不要使用Exception
-------------------------------------------------------
大家都知道return 是跳出方法的语句,如果在try里有return语句那么finally里的内容会不会执行呢?
答案是会的。会在return语句之前执行,执行完finally语句之后,return语句再执行。
finally在任何时候都会执行,但有一个例外那就是程序终止时,不会执行。System.exit(0);