Java进阶-异常处理

本文介绍了Java中的编译时异常和运行时异常,包括它们的定义、处理方式(如throws、try...catch...和结合使用),以及自定义异常的使用。示例代码展示了如何在实际开发中处理用户输入验证。
摘要由CSDN通过智能技术生成

概述

常见运行时异常

  • 直接继承自RuntimeException或者子类,编译阶段不会报错,运行时可能出现的错误

运行时异常:一般是程序员业务没有考虑好或者是编程逻辑不严谨引起的程序错误

  • 数组索引越界异常
  • 空指针异常
  • 类型转换异常
  • 数学操作异常
  • 数字转换异常 

常见编译时异常

  • 不是RuntimeExeption或者子类的异常,编译就报错,必须处理,否则代码不通过

异常的默认处理流程

 编译时异常的处理机制

编译时异常是编译阶段就出错的,所以必须处理,否则代码无法通过

方式一:throws

 注:一个方法内部可能有很多个异常,但是最终只会抛出一个异常,就看谁先出现了!

方式二:try...catch...

方式三:前两者结合

在开发中第三种方式是最好的,底层异常抛出去给最外层,最外层集中捕获处理。

运行时异常的处理机制

可以不处理,建议处理一下,只需要在最外层捕获处理就可以

案例

代码参考

public class Test2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(true){
            try {
                System.out.println("请你输入合法的价格:");
                String priceStr = sc.nextLine();
                //转成double类型的数据
                double price = Double.valueOf(priceStr);
                //判断价格是否大于0
                if (price > 0){
                    System.out.println("价格:"+price);
                    break;
                }else {
                    System.out.println("价格必须是正数!");
                }
            } catch (Exception e) {
                System.out.println("用户输入的数据有问题,请输入合法数值!");
                e.printStackTrace();
            }
        }
    }
}

自定义异常

补充:throw和throws的区别

throw:在方法内部直接创建一个异常对象,并抛出

throws:用在方法申明上,抛出方法内部的异常

自定义编译时异常

自定义运行时异常

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值