Java语法-异常

本文详细介绍了Java中的异常处理机制,包括异常的概念、编译器异常与运行期异常的区别及处理方式,trycatch的使用方法及其优势,以及如何通过finally代码块进行资源释放。此外还探讨了异常处理中常见的问题,如父类与子类方法中异常的处理规则,自定义异常类的方法等。

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

1、异常是什么?

程序执行时,遇到非语法错误的非正常情况,JVM无法运行
系统中断处理程序,产生异常类的对象;

2、什么是编译器异常?处理编译器异常的方法有哪些?

编译器异常是编写代码出现的异常,在Intellij idea 中就是显示橙色背景的异常;
throw …exception 给JVM处理,JVM会中断处理
try catch 编译器会抛出异常并继续执行try catch 后的代码;

3、什么是运行期异常?处理运行期异常的方法有哪些?

运行期异常是在运行程序时出现的异常,在编写程序时不会报错的异常;

4、try catch 如何使用?它的作用是什么?

try 后面的代码是可能出现异常的代码;
catch 后面的代码是出现异常后的处理代码;
try catch 的作用是处理出现异常的代码加上继续执行try catch 后面的代码;

5、error处理和exception处理的差别是什么?

exception处理分为编译器异常处理和运行期异常处理;
error处理只能修改源代码;

6、为什么throw 后面的创建的是什么对象的时候可以不处理,交给JVM处理?

RunTimeException 运行期异常;

7、当子方法传入参数时,要做什么提前工作?

合法性校验;

8、对方法中传入数组和索引,如何做校验工作?

数组不为null,否则 NullPointerException 空指针异常;
索引不能小于0或大于arr.length-1,否则 Array Index Out Of Bounds Exception 数组索引越界异常;

9、如果throw 后面创建的是父类异常,如何处理?

在方法外部多加一层throws 某异常,在调用该方法的外部,都加一层 throws 某异常;
在编译器提示的地方 alt+enter 可以快速解决问题;
在方法内部是 throw 关键字,在方法外部是 throws 关键字;

public class test {
    public static void main(String[] args) throws IOException {
        readFile("c://a.txt");
    }

    public static void readFile(String fileName) throws IOException {
        if (!fileName.equals("c://a.txt")) {
            throw new FileNotFoundException("文件未找到");
        }
        if (!fileName.endsWith(".txt")) {
            throw new IOException("后缀名不对");
        }
    }
}

10、try catch 处理异常比 throw 好的优势是什么?

throw 抛出异常后,后面的程序将不再运行;
try catch 抛出异常后,后面的程序继续执行;

11、try catch 的格式是什么?

try{可能产生错误的代码}
catch(异常代号 异常对象名){处理异常的逻辑}
处理异常后的代码

12、finally代码块的作用是什么?怎么用?

finally里面存放的代码是无论是否产生异常都要执行的代码;
finally的作用是资源释放
和try catch 合并使用;

13、多个异常如何用 try catch?

(1) 多次捕获,多次处理,即遇到一个异常就 try catch 一下;
(2) 一次捕获,多次处理,即一个 try, 多个 catch;
(3) 一次捕获,一次处理,这需要catch 里面的异常是一个包含所有可能出现的异常类;

14、一次捕获多次处理中,如果捕获到的异常有子父类关系,该怎么办?为什么要这样做?

子类的处理 即 子类的 catch 要放在父类的上面;
因为 try 中产生了异常对象,会从上到下依次赋值给 catch 定义的异常对象进行选择,如果先赋值给了父类变量名,那么就会使用多态,那么子类异常就不会被赋值到,也就不会被使用,这个错误编译器会提示;

15、父类方法有异常,子类重写的方法怎么处理?

要么抛出相同异常;
要么抛出子类异常;
要么不抛出异常;

16、父类方法没有异常,如果子类方法中有异常,需要怎么处理?

不能用 throw 声明异常,毕竟父类方法没有异常;
那么子类方法有异常,只能在子类方法内部用try catch 处理;

17、如何自定义异常类?

命名结尾一般为Exception;
继承Exception或RuntimeException;
继承Exception 就是 编译器异常,否则就是运行期异常;
在自定义的异常类中定义一个空参构造方法和一个含参构造方法;
在空参构造方法和含参构造方法都将参数传给父类,即super() 或者 super(参数);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值