java异常处理的机制有哪些(java中的异常机制)

java的异常机制

一、零引发的血案

1、看问题

首先、问大家一个问题:

public static void main(String[] args) {
        int num1 = 10;
        Scanner scanner = new Scanner(System.in);
        int num2 = scanner.nextInt();
        int res = num1 / num2;
        System.out.println(res);
        System.out.println("后边还有代码呦!");
}

请问:如果我输入了 “abc” 或者 0 程序应该怎么运行呢?

abc
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864) at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117) at java.util.Scanner.nextInt(Scanner.java:2076) at cn.itnanls.Demo.main(Demo.java:13)
0
Exception in thread "main" java.lang.ArithmeticException: / by zero
at cn.itnanls.Demo.main(Demo.java:14)

程序他在想办法告诉你,你错了!程序是永远找不到女朋友的,因为程序员只有真的是自己错了,他才会承认自己错了。

而且有个很重要的问题,程序碰到异常就不在继续执行后边的代码了,真是悲剧,很明显这不是你想要的。

世界上存在永远不会出错的程序吗?也许这只会出现在程序员的梦中。随着编程语言和软件的诞生,异常情况就如影随形地纠缠着我们,只有正确处理好意外情况,才能保证程序的可靠性。

2、解决方案

其实这个例子的解决方案至少有两种:

(1)、运行前对参数进行校验

public static void main(String[] args) { int num1 = 10;
Scanner scanner = new Scanner(System.in);
int num2 = scanner.nextInt();
if (num2 == 0){
System.out.println("除数不能为零"); return;
}
int res = num1 / num2;
System.out.println(res);
System.out.println("后边还有代码呦!");
}

这样是不是就解决了除数不能为零的问题。

(2)、出了问题想办法解决

public static void main(String[] args) {
        // 尝试执行
        try {
        int num1 = 10;
        Scanner scanner = new Scanner(System.in);
        int num2 = scanner.nextInt();
        int res = num1 / num2;
        System.out.println(res);
        } catch (Exception e){ // 遇到问题,找出问题
        System.out.println("除数不能为零!"); //
        解决问题
        e.printStackTrace(); //
        把问题的内容打印出来
        }
        System.out.println("后边还有代码呦!");
}

这样也可以让程序继续执行,我们发现我们找出的问题,他叫

Exception,也是的java类。

java异常处理的机制有哪些(java中的异常机制)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论