异常_try_catch捕获异常

一、用if-else处理异常

1、除数不可为0

2、两个数必须为整数

package TestException;
import java.util.*;
public class Test {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请录入第一个数:");
		if(sc.hasNextInt()) {
			int num1=sc.nextInt();
			System.out.println("请录入第二个数:");
			if(sc.hasNextInt()) {
				int num2=sc.nextInt();
				if(num2==0) {
					System.out.println("对不起,除数不能为0");
				}else {
					System.out.println("商:"+num1/num2);
				}
			}else {
				System.out.println("对不起,你录入的不是int类型的数据!");
			}
		}else {
			System.out.println("对不起,你录入的不是int类型的数据!");
		}
	}
}

缺点:

1、代码臃肿,业务代码和处理异常的代码混在一起

2、可读性差

3、程序员要花大量的精力来维护这个漏洞

4、程序员很难堵住所有的漏洞

基于if-else处理异常的缺点太多,所以java中专门出了一个异常处理机制:

二、try-catch

1、异常出现了怎么看?

第一行:提示异常的类型

最后一行:提示异常出现的位置

异常_try_catch捕获异常_第1张图片

 2、捕获异常:try-catch

package TestException;
import java.util.*;
public class Test01 {
public static void main(String[] args) {
	//实现一个功能,键盘录入两个数,求商
	//将可能出现异常的代码放入try代码块里
	try {
		Scanner sc=new Scanner(System.in);
		System.out.println("请录入第一个数:");
		int num1=sc.nextInt();
		System.out.println("请录入第二个数:");
		int num2=sc.nextInt();
		System.out.println("商:"+num1/num2);
	}catch(Exception ex) {
		System.out.println("对不起,程序出现异常!");
	}
	System.out.println("后面的逻辑代码正常运行...");
}
}

原理:

把可能出现异常的代码放入try代码块中,然后将异常封装为对象,被catch后面的()中的那个异常对象接收,接收以后:执行catch后面{}里面的代码,然后try-catch后面的代码,该怎么执行就怎么执行。

(1)try中没有异常,catch中代码不执行

(2)try中有异常,catch进行捕获:

如果catch中异常类型和你出的异常类型匹配的话:走catch中的代码(进行捕获)

如果catch中异常类型和你出的异常类型不匹配的话,不走catch中的代码(没有捕获),也就不会执行后续代码

注意:

(1)try中如果出现异常,然后用catch捕获成功的话,那么try中后续的代码是不会执行的

(2)如果catch捕获异常成功,那么try-catch后面的代码该执行还是执行没有影响

你可能感兴趣的:(笔记,java,算法,开发语言)