java异常处理流程

异常处理流程.png

1.当程序在运行的过程中出现了异常,会由JVM自动根据异常的类型实例化一个与之类型匹配的异常类。
2.产生异常对象后会判断当前的语句是否存在异常处理,如果现在没有异常处理,就交给JVM进行默认的异常处理,处理方式:输出异常信息,而后结束程序的调用。
3.如果此时存在异常的捕获操作,那么会先有try语句来捕获产生的异常类实例化对象,再与try'语句的每一个catch进行对比,如果有符合的捕获类型,则使用当前catch的语句来进行异常的处理,如果不匹配,则往下继续匹配其他catch。
4.不管最后异常处理是否能够匹配,都要向后执行,如果此时程序中存在finally语句,就先执行finally中的代码。执行完finally语句后需要根据之前的catch匹配结果来决定如何执行,如果之前已经成功捕获异常,就集继续执行finally之后的代码,如果之前没有成功的捕获异常,九江此异常交给JVM进行默认处理。
整个过程就像方法传递参数一样,只是根据catch后面的参数类型进行匹配。既然对象捕获只是一个异常类对象的传递过程,那么根据java中对象自动向上转型,所以异常类对象都可以向父类对象转型,也证明了所有异常类对象都可以使用Exception来接收。
为什么不选择Throwable?
如果该异常只有Exception类型,如果使用Throwable接受,还会表示可以处理Error的错误,二用户是处理不了Error错误的(jvm处理),所以开发中用户可以处理的异常都要求以Exception为主。

你可能感兴趣的:(java异常处理流程)