Java--捕获异常try...catch...finally语句

try...catch...finally语句的应用语法:

try {
	//业务实现代码(可能发生异常)
	...
}
catch(异常类1  异常对象) {
	//异常类1的处理代码
}
catch(异常类2  异常对象) {
	//异常类2的处理代码
}
...//可以有多个catch语句
catch(异常类n  异常对象) {
	//异常类n的处理代码
}
finally{
    //资源回收语句
}

1、执行try语句中的业务代码出现异常时,系统会自动生成一个异常对象,该异常对象被提交给Java运行环境,此过程称为“抛出异常”;

2、当Java运行时环境收到异常对象时,会寻找能处理该异常对象的catch语句,即跟catch语句中的异常类型进行一一匹配,如果匹配成功,则执行相应的catch块进行处理,这个过程称为“捕获异常”;

3、try语句后可以有一条或多条catch语句,这是针对不同的异常类提供不同的异常处理方式。

4、try块是必需的,catch块和finally块是可选的,但catch块和finally块二者至少出现其一,也可以同时出现,即有两种形式的用法:try...finally和try...catch...finally;

5、try...catch...finally语句中的顺序不能颠倒,所有的catch块必须位于try块之后,finally块必须位于所有的catch块之后。

 try...catch语句练习代码如下:

import java.util.Scanner;

public class Throwable {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Scanner scanner=new Scanner(System.in);
		int array[]=new int[3];
		try {
			System.out.println("请输入第1个数:");
			String str=scanner.next();
			int n1=Integer.parseInt(str);
			System.out.println("请输入第2个数:");
			int n2=scanner.nextInt();
			array[1]=n1/n2;
			array[3]=n1*n2;
			System.out.println("两个数的和是:"+(n1+n2));
		} catch (NumberFormatException ex) {
			// TODO: handle exception
			System.out.println("数字格式化异常");
		} catch (ArrayIndexOutOfBoundsException ex) {
			// TODO: handle exception
			System.out.println("下标越界异常");
		} catch (ArithmeticException ex) {
			// TODO: handle exception
			System.out.println("算术异常");
		}catch (Exception ex) {
			// TODO: handle exception
			System.out.println("其他未知异常");
		}
		System.out.println("程序结束");
	}		
}

当从键盘输入字符串时,将该字符串换成整数会产生NumberFormateException异常,因此对应的异常处理会输出“数字化格式异常”,运行结果如下所示:

73cdd37c5c0349308f755020dfcc06f7.png

当从键盘输入的第二个数是0时,会产生ArithmeticException算术异常,运行结果如下所示:

8e6c0b8a09254285a9c141300c6469be.png

当输入的两个数都正确时,会执行“array[3]=n1*n2”语句,因数组a的长度为3,其下标取值为0~2,所以使用array[3]会产生数组下标越界异常,运行结果如下所示:

9edd11acf1914c47b135d5366cfe022d.png

上述代码中,try语句后有四条catch语句,分别针对NumberFormatException、ArrayIndexOutOfBoundsException、ArithmeticException、和Exception这四种异常进行处理,其中Exception是其他3种异常的父类,其他3种异常的顺序可以颠倒,而Exception异常不能和前面的异常进行调换,Exception能够处理所有异常,该异常只能放在最后使用,否则Java虚拟机将会报错,无法正常运行代码段。

猜你喜欢

转载自blog.csdn.net/weixin_65089091/article/details/127752174