为什么使用异常

主讲人:王少华  QQ群号:483773664

一、生活中的异常:上下班

1、正常情况

王老师每天开车上班,正常情况下,30分钟


2 异常情况

发生堵车甚至撞车,就会迟到


二、程序异常

(一)需求

根据提示输入被除数和除数,计算并输出商,最后输出“感谢使用本程序”

(二)实现

1
2
3
4
5
6
7
8
9
10
11
12
public class Test1 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("请输入被除数:");
        int num1 = in.nextInt();
        System.out.print("请输入除数:");
        int num2 = in.nextInt();
        System.out.println(String.format("%d / %d = %d", num1,
                num2, num1/ num2));
        System.out.println("感谢使用本程序!");
    }
}

(三)运行

1、正常情况


2、异常情况:被除数输入B


3、异常情况:除数输入0


从上面的异常运行结果可以看出,一旦出现了异常,程序将会立即退出,后面的代码不会被执行

(四)改进代码

利用我们现有的知识,我们防止这些异常的出现?可以通过if-else来实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class Test1 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("请输入被除数:");
        int num1 = 0;
        if (in.hasNextInt()) {//如果输入的被除数是整数
            num1 = in.nextInt();
        }else {//如果输入的被除数不是整数
            System.out.println("输入的被除数不是整数,程序退出");
            System.exit(1);
        }
         
        System.out.print("请输入除数:");
        int num2 = 0;
        if(in.hasNextInt()){
            num2 = in.nextInt();
            if(0==num2){
                System.err.println("输入的除数是0,程序退出");
                System.exit(1);
            }
        }else {
            System.err.println("输入的除数不是整数,程序退出");
            System.exit(1);
        }
        System.out.println(String.format("%d / %d = %d", num1,
                num2, num1/ num2));
        System.out.println("感谢使用本程序!");
    }
}

(五)使用if-else的缺点

  • 代码臃肿

  • 程序员花大量的精力用于“堵漏洞”

  • 漏洞很难穷举,不可能堵住所有的漏洞

  • 业务代码和异常代码交织在一起,影响代码的可读性和日后的维护







imentors

105篇文章,9W+人气,0粉丝

Ctrl+Enter 发布

发布

取消