MST

星途 面试题库

面试题:Java中常见异常类型及捕获处理方式

请列举Java中几种常见的异常类型,并阐述如何使用try - catch语句块来捕获和处理异常。同时说明finally块的作用及执行时机。
28.7万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

常见异常类型

  1. 空指针异常(NullPointerException):当应用程序试图在需要对象的地方使用null时抛出。例如,调用null对象的方法或访问null对象的属性。
  2. 数组越界异常(ArrayIndexOutOfBoundsException):当使用一个错误的索引访问数组时抛出。如果索引为负或大于等于数组的大小就会出现此异常。
  3. 类型转换异常(ClassCastException):当试图将对象强制转换为不是实例的子类时抛出。例如,将一个Object对象强制转换为String对象,但实际对象并非String类型。
  4. 算术异常(ArithmeticException):当出现异常的运算条件时抛出。例如,整数除以零。

try - catch语句块使用

try {
    // 可能会抛出异常的代码
    int result = 10 / 0; // 这里会抛出ArithmeticException
    System.out.println("结果是: " + result);
} catch (ArithmeticException e) {
    // 捕获ArithmeticException异常并处理
    System.out.println("捕获到算术异常: " + e.getMessage());
}

try块中放置可能抛出异常的代码。当异常抛出时,程序会立即跳转到对应的catch块。catch块中的参数是异常类型,在这个例子中是ArithmeticExceptione是异常对象,可以通过e.getMessage()获取异常的详细信息。

finally块的作用及执行时机

  1. 作用finally块用于放置无论try块中是否发生异常都必须执行的代码。常用于资源的清理,如关闭文件、数据库连接等。
  2. 执行时机
    • 如果try块中没有发生异常,try块正常执行完毕后,会执行finally块。
    • 如果try块中发生异常,并且有匹配的catch块捕获并处理了异常,在catch块执行完毕后,会执行finally块。
    • 如果try块中发生异常,并且没有匹配的catch块捕获异常,在异常传递给上层调用者之前,会执行finally块。
try {
    // 可能会抛出异常的代码
    int result = 10 / 0; 
} catch (ArithmeticException e) {
    System.out.println("捕获到算术异常: " + e.getMessage());
} finally {
    System.out.println("finally块总会执行");
}

在上述代码中,无论try块中的除法运算是否抛出异常,finally块中的代码都会执行。