异常——if-else try-catch)

异常

我们在测试程序中发现问题

Exception 在程序的运行过程中 发生了不正常的现象 阻止了程序的运行 称之为发生异常

如下面求和

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个数");
        int num1 = sc.nextInt();
        System.out.println("请输入第二个数");
        int num2 = sc.nextInt();
        System.out.println("商:" + num1 / num2);
    }
}

程序运行时 我们除数输入0 或者字符就会报错

我们可以选择用if-else处理异常 

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个数");
        if (sc.hasNextInt()) {
            int num1 = sc.nextInt();
            System.out.println("请输入第二个数");
            if (sc.hasNextInt()) {
                int num2 = sc.nextInt();
                if (num2 == 0) {
                    System.out.println("对不起 除数不能为0");
                } else {
                    System.out.println("商:" + num1 / num2);
                }
            }else {
                System.out.println("对不起 你录入的不是int类型的数");
            }
        }else {
            System.out.println("对不起 你录入的不是int类型的数");
        }
    }
}

但是有缺点 代码臃肿 业务代码和处理异常的代码混在一起 可读性差 很难堵住所有漏洞

基于if-else处理异常缺点太多 所以java中专门出了一个异常处理机制

异常三连 try-catch-finally

异常出现了怎么看

捕获异常 try——catch

public class Test2 {
    public static void main(String[] args) {
        try {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入第一个数");
            int num1 = sc.nextInt();
            System.out.println("请输入第二个数");
            int num2 = sc.nextInt();
            System.out.println("商:" + num1 / num2);
        }catch (Exception ex){
            System.out.println("对不起 出错了");
        }
        System.out.println("谢谢你使用计算器111");
        System.out.println("谢谢你使用计算器111");
        System.out.println("谢谢你使用计算器111");
        System.out.println("谢谢你使用计算器111");
    }
}

 原理

把可能出现异常的代码放到try中 然后将异常封装成对象 将catch后面的()中的那个异常对象接收 接收以后 执行后面的()里面的代码块 然后try——catch后面的代码该怎么执行怎么执行

如果

try没有异常 catch中代码不执行 后续的代码继续执行

如果catch异常的类型和你出的异常的类型匹配的话 走catch中的代码---》进行捕获 后续的代码继续执行

如果catch异常的类型和你出的异常的类型不匹配的话 不走catch中的代码---》没有捕获成功 程序相当于遇到异常了 中断了 后面代码不执行

catch中处理异常的方式

第一种 什么都不做 什么都不写

第二种 添加友好性提示 输出自定义信息

第三种 打印异常信息

1.调用toString方法 打印全限定路径

2.显示异常描述信息对应的字符串 如果没有就显示null

3.显示异常的堆栈信息 将异常信息捕获后 在控制台将异常的效果给我们展示出来 方便我们查看异常

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值