MST

星途 面试题库

面试题:Java异常处理机制之中等难度:异常类型及捕获

请阐述Java中Checked Exception(受检异常)和Unchecked Exception(非受检异常)的区别,并举例说明。同时,写一段Java代码,捕获并处理一个可能出现的`IOException`,并在捕获块中打印异常信息。
22.3万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

区别

  1. Checked Exception(受检异常)
    • 这类异常在编译时就被检查,如果方法可能抛出一个Checked Exception,要么在方法签名中声明抛出该异常,让调用者处理;要么在方法内部捕获并处理。
    • 通常是由于外部环境(如文件不存在、网络连接问题等)导致的异常,程序员无法完全避免,但可以通过适当的处理来增强程序的健壮性。
    • 例如:IOExceptionSQLException等。
  2. Unchecked Exception(非受检异常)
    • 这类异常在编译时不被检查,即使方法可能抛出Unchecked Exception,也不需要在方法签名中声明,或在方法内部捕获。
    • 通常是由于程序逻辑错误导致的,如空指针引用、数组越界等。应该通过改进代码逻辑来避免这类异常,而不是通过异常处理机制。
    • 例如:NullPointerExceptionArrayIndexOutOfBoundsException等。

示例代码

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块中打印异常信息。