Java 异常的捕获及处理 要点 习题

128 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。


一、要点

下面对异常的捕获及处理做一总结:

1、异常是导致程序中断运行的一种指令流,当异常发生时,如果没有进行良好的处理,则程序将会中断执行。

2、异常可以使用try•••catch进行处理,也可以使用try•••catch•••finally进行处理,在try语句中捕捉异常,然后在catch中处理异常,finally作为异常的统一出口,不管是否发生异常都要执行此段代码。

3、异常的最大父类是Throwable,其分为两个子类,分别为Exception、Erroro。Exception 表示程序处理的异常,而Error表示JVM错误,一般不由程序开发人员处理。

4、发生异常后,JVM会自动产生一个异常类的实例化对象,并匹配相应的catch语句中的异常类型,也可以利用对象的向上转型关系直接捕获Exception。

5、throws用在方法声明处,表示本方法不处理异常。

6、throw表示在方法中手工抛出一个异常。

7、自定义异常类时,只需要继承Exception类即可。

8、断言是JDK 1.4后提供的新功能,可以用来检测程序的执行结果,但开发中并不提倡使用断言进行检测。

9、最后 (1)通过继承java.lang.Exception类声明自己的异常类。 (2)在方法适当的位置生成自定义异常的实例,并用throw语句抛出。 (3)在方法的声明部分用throws语句声明该方法可能抛出的异常。

二、习题

题目:编写应用程序,从命令行输入两个小数参数,求它们的商。要求程序中捕获 NumberFormatException异常和ArithmeticException异常。

分析:ArithmeticException 算数异常:判断除数是否为0; NumberFormatException 数字格式异常:判读输入的数字是否是数字

代码如下:

import java.util.Scanner;
public class Demo {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        while(true){
            try{
                System.out.println("输入除数");
                float f1 = Float.parseFloat(s.nextLine());
                System.out.println("输入被除数");
                float f2 = Float.parseFloat(s.nextLine());
                if(f2==0){
                    throw new ArithmeticException("捕获到除0异常~~!!");//手动抛出除零异常
                }
                float result = f1/ f2;
                System.out.println("计算结果:" + f1 + "/" + f2 + "=" + result);
                break;//如果能正常运行到这里,说明前面的输入都是正确的,所以可以跳出循环了
            }catch(NumberFormatException e1){//捕获数字格式异常
                System.out.println("捕获到数字格式异常");
            }catch (ArithmeticException e2) {//捕获到除零异常
                System.out.println(e2.getMessage());
            }
        }
    }
}

运行结果:

输入除数 4 输入被除数 0 捕获到除0异常~~!! 输入除数 2 输入被除数 a 捕获到数字格式异常 输入除数 6 输入被除数 9 计算结果:6.0/9.0=0.6666667


看到最后,点个赞吧!