Java 基础面试题, Java 运行时异常和编译时异常之间的区别是什么?
Java 基础面试题, Java 运行时异常和编译时异常之间的区别是什么?
QA
Step 1
Q:: Java 运行时异常和编译时异常之间的区别是什么?
A:: Java 的异常分为运行时异常(RuntimeException)和编译时异常(CheckedException)。运行时异常是在程序运行过程中可能发生的异常,通常是编程错误,比如空指针引用(NullPointerException)或数组越界(ArrayIndexOutOfBoundsException)。编译时异常是在编译期间检测到的异常,必须在代码中显式处理(使用 try-
catch 语句或声明 throws),例如文件未找到异常(FileNotFoundException)或类未找到异常(ClassNotFoundException)。编译时异常要求程序员预见可能的错误并进行处理,而运行时异常往往不需要强制处理,可能会导致程序崩溃。
Step 2
Q:: 如何处理 Java 中的编译时异常?
A:: 在 Java 中,编译时异常需要显式处理,通常有两种方式:1. 使用 try-catch 语句捕获异常并处理;2. 使用 throws 关键字将异常抛出,让调用方法的代码处理。例如,如果方法可能会引发 IOException,可以选择在方法内部使用 try-
catch 捕获并处理它,或者在方法签名中使用 throws IOException 声明抛出此异常。
Step 3
Q:: 什么是 Java 中的异常链(Exception Chaining)?
A:: 异常链是指在捕获一个异常并希望保留原始异常信息的情况下,创建一个新的异常并将原始异常作为其原因(cause)。这可以通过 Throwable 类的构造函数将原始异常传递给新异常。例如,在处理异常时,可以使用 throw new CustomException('message', e)
将原始异常 e 包装在新的 CustomException 中,从而保留原始异常的堆栈信息。