# 捕获与异常处理

捕获与异常处理

1.1异常的概念是什么
异常是用来封装错误信息的对象
组成结构:类型 提示 行号
1.2异常的继承结构是什么?
在这里插入图片描述在程序当中,分为两种Error不是程序在运行过程中出现的问题。但是Exception是属于程序在运行过程中出现的异常。我们需要对这种Exception的异常进行处理。处理的方式有两种方法,一种是异常的地方进行捕获处理try…catch方法,另外一种是不在异常的地方自行处理,而是用throw的方式进行抛出。
2 异常处理之try…catch处理

2.1 try…catch的结构:try…catch当中是先把可能存在异常问题得到代码块放在try后面,然后把可能出现的异常放在catch后面的一个小括号里,并把解决方案放在catch后面的大括号里面.

try{
    
     可能会出现异常的代码
   } catch(异常的类型和异常的名字){
    
    
		   	如果捕获到异常的解决方案
		   }

2.2 try…catch 还可以在后面接上多个catch,这种用法有点像if…else if 后面else if可以有多个一样的原理,如果需要捕获多个异常,就可以用多个catch来进行处理.

try{
    
     可能会出现异常的代码
   } catch(异常的类型1和异常的名字1{
    
    
		   	如果捕获到异常的解决方案1
		   }
	 catch(异常的类型2和异常的名字2{
    
    
		   	如果捕获到异常的解决方案2
		   }
	catch(异常的类型3和异常的名字3{
    
    
		   	如果捕获到异常的解决方案3
		   }
		   ...

2.3 在try…catch的使用中常常遇到的如果是多种子类异常的情况,使用比较多的catch会造成代码块比较复杂,用异常的父类来直接接受这些异常,方便一次捕获多种可能性的异常,也不用把每个子类的异常都捕获一次.

try{
    
    可能会出现异常的代码
}catch(Exception e){
    
    
如果捕获到异常统一的解决方案}

2.4 这样使用一个各类子类Exception的"爸爸"来统一给出一个异常出现后,解决问题的标准,方便一次性解决问题.

3.异常处理之Throws处理

3.1 在面对异常的时候,除了用try…catch方法来捕获异常,还可以用throws来抛出异常,就相当于,try…catch遇到问题后是自己解决了问题,但是throws是自己定位到问题后,自己没有解决问题,而是把问题抛给了自己的"领导",也就是把异常抛给了调用自己的方法.

3.2Throws处理的结构:

修饰符  返回值类型  方法名(参数列表)throws Exception {
    
    方法体}

3.3抛出异常时候的注意事项

  • 子类抛出异常后,在调用它的父类中也需要抛出异常,并且抛出的异常的类型要大于等于子类中异常的类型.
  • 一般需要在main()方法之前捕获解决异常,而不是把问题抛出给main方法,因为抛给main方法就没有人解决了
  • 所有异常抛出的顶级父类最大的类型是Exception而不是Throwable,因为Throwable是包含了一部分的Error的错误在里面的,这部分是不能被抛出的,因为这部分问题抛出后jvm并不能解决这类问题,所以只能抛出到Exception这一父类,在Exception这一父类里面的才是JVM有可能能解决的问题.
import java.util.Scanner;

public class Test1_ExceptionDemo {
    
    
	public static void main(String[] args) throws Exception {
    
    
		m1();//方法1用来测试暴露异常后用try...catch来进行处理
		m2();//方法2用throws Exception来进行捕获处理
	}

	public static void m2() throws Exception{
    
    
		System.out.println("请输入第一个要计算的数");
		int a =new Scanner(System.in).nextInt();
		System.out.println("请输入第二个要计算的数");
		int b = new Scanner(System.in).nextInt();
		System.out.println(a/b);
	}

	
	public  static void m1() {
    
    
		try {
    
    
			System.out.println("请输入第一个要计算的数");
			int a =new Scanner(System.in).nextInt();
			System.out.println("请输入第二个要计算的数");
			int b = new Scanner(System.in).nextInt();
			System.out.println(a/b);
		}catch(Exception e) {
    
    
			System.out.println("请输入正确的数字");
		}
	}
}

猜你喜欢

转载自blog.csdn.net/m0_55284524/article/details/114632083