面试题答案
一键面试区别
- Checked Exception(受检异常):
- 这类异常在编译时就被检查,如果方法可能抛出一个Checked Exception,要么在方法签名中声明抛出该异常,让调用者处理;要么在方法内部捕获并处理。
- 通常是由于外部环境(如文件不存在、网络连接问题等)导致的异常,程序员无法完全避免,但可以通过适当的处理来增强程序的健壮性。
- 例如:
IOException
、SQLException
等。
- Unchecked Exception(非受检异常):
- 这类异常在编译时不被检查,即使方法可能抛出Unchecked Exception,也不需要在方法签名中声明,或在方法内部捕获。
- 通常是由于程序逻辑错误导致的,如空指针引用、数组越界等。应该通过改进代码逻辑来避免这类异常,而不是通过异常处理机制。
- 例如:
NullPointerException
、ArrayIndexOutOfBoundsException
等。
示例代码
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class ExceptionExample {
public static void main(String[] args) {
File file = new File("nonexistentfile.txt");
try (FileInputStream fis = new FileInputStream(file)) {
// 读取文件内容的代码
} catch (IOException e) {
System.out.println("捕获到IOException,异常信息如下:");
e.printStackTrace();
}
}
}
在上述代码中,FileInputStream
的构造函数可能抛出IOException
,这是一个Checked Exception。通过try - catch
块捕获并在catch
块中打印异常信息。