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异常处理流程
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...