Java异常处理try catch、throws和throw

关于try catch、throws和throw的用法和使用环境

我们先演示一个程序
程序示例

package com.kaikeba.demo4_2;

import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        //创建输入对象
        Scanner input = new Scanner(System.in);
        //提示用户输入
        System.out.println("请输入一个数字:");
        //创建一个int类型number存储输入的数据
        int number = input.nextInt();
        //打印输入结果
        System.out.println("您输入的数字是:"+number);
        
    }
}

运行结果
Java异常处理try catch、throws和throw_第1张图片
此时程序正常,但是我们输入一个不是int类型的数据呢?
Java异常处理try catch、throws和throw_第2张图片
程序已经玩完,因为看提示已经发生了InputMismatchException这个异常,而且我们注意到没有告诉我们输入内容的代码提示,说明那之后的代码都没有运行了
而使用try catch就可以很轻松的处理这种情况。

try catch

功能:捕获异常。发生了预期内的异常,将其捕获并处理。
用法

try{
	// 有可能发生异常的代码段
}catch(异常类型1 对象名1){
	// 异常1的处理操作
}catch(异常类型2 对象名2){
	// 异常2的处理操作
} ...
finally{
	// 异常的统一出口
	//除了前面有关闭程序代码执行以外,不管是否产生了异常,最终都要执行此段代码。
}

现在我们用try catch将上面的程序处理

package com.kaikeba.demo4_2;

import java.util.InputMismatchException;
import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        //创建输入对象
        Scanner input = new Scanner(System.in);
        //提示用户输入
        System.out.println("请输入一个数字:");

        try{
            //创建一个int类型number存储输入的数据
            int number = input.nextInt();
            //打印输入结果
            System.out.println("您输入的数字是:"+number);
        }catch (InputMismatchException e){
            //发生异常处理的代码
            System.out.println("zz,不是叫输入数字吗?");
        }

    }
}

再输入奇怪的东西
Java异常处理try catch、throws和throw_第3张图片

使用情景:有无法避免的异常发生,但是为了程序还要运行,要继续执行后边的代码,此时就需要将这个可能会发生的异常处理掉。

异常还有一种处理办法就是将异常扔给别人。。。

finally

在进行异常的处理之后,在异常的处理格式中还有一个finally语句,那么此语句将作为异常的统一出口,不管是否产生了异常,最终都要执行此段代码。

throws

功能:抛出可能发生的对应异常。表示方法中不处理异常,将这个方法里面发生的该异常抛给调用者。
用法

//class 类名 throws 异常类型{}
package com.kaikeba.demo4_2;

import java.util.InputMismatchException;
import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        Demo2 demo2 = new Demo2();
        demo2.inputNumber();
    }
}

class Demo2 {
    public void inputNumber() throws InputMismatchException {
        //创建输入对象
        Scanner input = new Scanner(System.in);
        //提示用户输入
        System.out.println("请输入一个数字:");
        //创建一个int类型number存储输入的数据
        int number = input.nextInt();
        //打印输入结果
        System.out.println("您输入的数字是:"+number);
    }
}

Java异常处理try catch、throws和throw_第4张图片
此时注意,异常发生的位置是在main方法的Dome.java:20了
使用情景
1.发生的异常不在于这里的时候。
2.由于传参错误导致的IOException,就要将异常抛给调用者,让调用者去处理(这个黑锅我们不背!.jpg)。

异常也是对象,所已我们自己也能搞出异常

throw

功能:人为的抛出一个异常
用法
在指令代码中扔出去一个异常(没事找事???)

//throw 异常对象;
package com.kaikeba.demo4_2;

import java.util.InputMismatchException;
import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        //创建输入对象
        Scanner input = new Scanner(System.in);
        //提示用户输入
        System.out.println("请输入一个数字:");
        //创建一个int类型number存储输入的数据
        int number = input.nextInt();
        //抛出一个异常
        if (number == 5201314) {
            throw new InputMismatchException();
        }
        //打印输入结果
        System.out.println("您输入的数字是:"+number);

    }
}

代码运行到在此处就会发生异常。
Java异常处理try catch、throws和throw_第5张图片
使用情景:需要通过异常告诉使用者代码运行到了此处。
但是!这样的抛出异常极其不推荐作为判断的条件,生活已经很不容易了呢,还是不要老是给自己找事了吧!

你可能感兴趣的:(学习笔记,java)