2、声明异常,捕获处理异常 这个您看看理解的正确吗

来源:13-13 测评作业

unbreakable_全栈

2024-12-02

package com.imooc.catchWork;

public class Car {
    // 重写toString方法,返回自定义的字符串
    @Override
    public String toString() {
        return "这是一辆汽车对象";
    }

    /**
     * buyCar 方法中创建了一个 Object 类型的对象 car,并将其设置为 null,然后调用 toString() 方法。
     * 由于 car 是 null,所以会抛出 NullPointerException(空指针异常)
     *
     * buyCar 方法内部使用了 try-catch 块来捕获 NullPointerException。
     * 如果在 try 块中的代码执行时抛出了 NullPointerException,它将被 catch 块捕获,并打印出异常信息
     *
     * buyCar 方法的签名中添加了 throws Exception,这表示该方法可能会抛出 Exception 类型的异常。
     * 然而,在这种情况下,这不是必须的,因为 NullPointerException 是 RuntimeException 的子类,
     * 而 RuntimeException 及其子类不需要在方法签名中声明
     */
    // 声明buyCar方法可能抛出Exception
    static void buyCar() throws Exception {
        try {
            Object car = null;
            car.toString(); // 这行代码将引发NullPointerException
        } catch (NullPointerException e) {
            // 捕获并处理NullPointerException
            System.out.println("捕获到空指针异常:" + e.getMessage());
            // 可以在这里添加更多的异常处理逻辑
        }

//        // 创建Car类的实例,而不是null
//        Object car = new Car();
//        // 调用toString方法,现在不会抛出NullPointerException
//        System.out.println(car.toString());
    }

    /**
     * 在 main 方法中,我也添加了一个 try-catch 块来捕获 buyCar 方法可能抛出的任何异常。
     * 这是为了确保如果 buyCar 方法中发生了未被内部 catch 块捕获的异常,它仍然可以被 main 方法中的 catch 块捕获
     * @param args
     */
    public static void main(String[] args) {
        try {
            buyCar(); // 调用buyCar方法,并准备捕获可能抛出的异常
        } catch (Exception e) {
            // 如果buyCar方法抛出异常,这里将捕获并处理
            System.out.println("buyCar方法中发生异常:" + e.getMessage());
        }
    }
}

写回答

1回答

彭彭老师

2024-12-03

没有问题

0
0

Java零基础入门与实战

Java零基础入门与实战 多场景|多案例|全栈项目

277 学习 · 220 问题

查看课程