11.4异常处理流程

异常处理流程

Java中可以处理的异常全部都是在程序运行中产生的异常,当程序运行到某行代码并且此代码执行出现异常时,会由JVM帮助用户去判断此异常的类型,并且自动动进行指定类型的异常类对象实例化处理;
如果此时程序之中并没有提供有异常处理的支持,则会采用JVM默认异常处理方式,首先进行异常信息的打印,而后直接退出当前的程序;
如果此时程序中如果存在有异常处理,那么这个产生的异常类的实例化对象将会被try语句所捕获;
try捕获到异常之后与其匹配的catch中的异常类型进行依次的比对,如果此时与catch中的捕获异常类型相同,则认为应该使用此catch进行异常处理,如果不匹配则继续匹配后续的catch类型,如果没有任何的catch匹配成功,那么就表示该异常无法进行处理;
不管异常是否处理最终都要执行finally语句,但是当执行完成finally的程序之后会进一步判断当前的异常是否已经处理过了,如果处理过了,则继续向后执行其它代码,如果没有处理则交由JVM进行默认的处理。
在这里插入图片描述
异常继承
在这里插入图片描述
Throwable有两个子类
Error:指的是JVM错误,这个时候的程序并没有执行,无法处理;
Exception:指的是程序运行中产生的异常,用户可以使用异常处理格式处理。

范例:简化异常处理

package cn.mldn.demo;
public class JavaDemo {
	public static void main(String args[]) {
		System.out.println("【1】****** 程序开始执行 ******");
		try {
			int x = Integer.parseInt(args[0]);// 初始化参数转为数字
			int y = Integer.parseInt(args[1]);// 初始化参数转为数字
			System.out.println("【2】****** 数学计算:" + (x / y)) ;// 除法计算
		} catch (Exception e) {// 处理所有异常
			e.printStackTrace() ;
		} finally {// 最终出口,必然执行
			System.out.println("【F】不管是否出现异常,我都会执行。") ;
		}
		System.out.println("【3】****** 程序执行完毕 ******");
	}
}

执行结果

【1】****** 程序开始执行 ******
java.lang.ArrayIndexOutOfBoundsException: 0
【F】不管是否出现异常,我都会执行。
【3】****** 程序执行完毕 ******
	at com.lxh.elevenchapter.Java248.main(Java248.java:7)

此时异常统一使用Exception进行处理,这样不管程序中出现何种情况,程序都可以捕获并处理。

注意:捕获多个异常时,捕获异常小的异常要放在捕获异常大的异常之前处理。
编写异常处理时,Exception 的处理一定要写在ArithmeticException的处理之后,否则将出现语法错误。

发布了162 篇原创文章 · 获赞 9 · 访问量 3084

猜你喜欢

转载自blog.csdn.net/ll_j_21/article/details/104733560