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
没有问题
00
相似问题