异常(11)
了解了try-catch-finally的执行流程后,那么我们就要来了解异常的处理流程了,理解程序是如何一步步处理异常的,话不多说,来看。
关于"调用栈"
方法之间是存在相互调用关系的,这种调用关系我们可以用"调用栈"来描述,在JVM中有一块内存空间称为“虚拟机栈"专门存储方法之间的调用关系,当代码中发现异常时,我们就可以使用e.printStackTrace();的方式查看出现异常代码的调用栈..
如果本
方法中没有合适的处理异常的方式,就会沿着调用栈向上传递
如果一直向上传递都没有合适的方法处理异常,最终就会交给JVM处理,程序就会异常终止
(跟我们最开始未使用try catch时是一样的)
可以看到,程序已经异常终止了,没有执行到System.out.println("after try catch")这一行.
异常处理流程总结
程序先执行try中的代码
如果try中的代码出现异常,就会结束try中的代码,看和catch中的异常类是否匹配,
如果找到匹配的异常类型,就会执行catch中的代码.
如果没有找到匹配的异常类型,就会将异常向上传递到上层调用者..
无论是否找到匹配的异常类型,finally中的代码都会被执行到(在该方法结束之前执行).
如果上层调用者也没有处理的异常,就继续向上传递.
一直到main方法也没有合适的代码处理异常,就会交给JVM来处理,此时程序异常终止..
好了,今天分享就到这里,谢谢大家!!!