Java 异常

本文深入讲解Java中的异常处理机制,包括error与exception的区别、受检异常与非受检异常的概念,以及如何通过try-catch-finally结构来处理异常。此外还介绍了如何自定义异常类,并给出了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class Application {

    public static void main(String[] args) {
        /*
         * Java 中程序执行过程中产生的错误分为两种:error 和exception
         * error 是外部环境导致的错误,例如: JVM 内存不足,硬盘炸了等等...
         *      这个级别的错误不需要程序进行处理
         * exception 是代码产生的错误,例如:空指针,索引越界...
         *      这个级别的错误需要我们处理
         */
        // Exception 异常
        // 当我们程序产生问题的时候,系统会抛出exception,高速我们错误的原因
        //需要我们捕获处理,如果不捕获处理,程序将直接被杀死

        //通过try-catch-finally 处理异常 跳过
        try{
            //可能产生一次行的代码写在try 中
            //一旦某行代码产生异常,就立刻跳转到catch进行处理
            //try 中的后续代码不再执行

            int a = 10 / 0;//错误的逻辑   不处理异常的话,程序会在这里结束
                           // / by zero   处理了一场,程序继续向下执行

            String b = null;
            int c = b.length();
        }catch (ArithmeticException e) {//处理除以0的异常
            //处理异常的代码 写在 catch中
            //如果try中的代码没有产生异常,这里的代码不会执行
            //如果try中的代码会产生多个异常,就需要多个catch分别处理,一个catch处理一个异常
        }catch (NullPointerException e) {//处理空指针异常

        }
        finally {
            //这里的代码 无论是否产生异常都会执行
            //应用场景不多
        }


        System.out.println("测试");

        //exception 分为:受检异常和非受检异常
        //受检异常:Exception 是代码中必须处理的异常,如果不处理,编译就会出错,不能通过
        //              使用 try - catch进行处理
        //非受检异常:RuntimeException 是代码可选处理异常,不处理也可以编译,
        //              但是一旦出现问题,程序就会被杀死。例如:空指针,索引越界
        //              可以通过合理的代码逻辑避免产生问题

        // 在编程中,我们可以通过自定义异常告诉用户某个操作失败的原因
        // 例如:通过自定义异常告诉用户登录失败的原因
        // 自定义受检异常:自定义类继承 Exception类,生成五个构造方法 即可
        // 自定义非受检异常:自定义类继承 RuntimeException 类 ,生成五个构造方法 即可

        //1、创建AccountNotExistsException 和PassswrodErrorException两个自定义异常类
        //2、修改 UserService 中 login方法 增加throw
        //3、修改 UserServiceImpl 中 login 方法 抛出异常
        //4、修改 UserController 中 调用 login的代码处理异常
    }

}

异常练习 与 Map练习 一起写在下一个博客
详见:
Java 小练习—用户注册登录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值