面试题答案
一键面试常见异常类型
- 空指针异常(NullPointerException):当应用程序试图在需要对象的地方使用null时抛出。例如,调用null对象的方法或访问null对象的属性。
- 数组越界异常(ArrayIndexOutOfBoundsException):当使用一个错误的索引访问数组时抛出。如果索引为负或大于等于数组的大小就会出现此异常。
- 类型转换异常(ClassCastException):当试图将对象强制转换为不是实例的子类时抛出。例如,将一个
Object
对象强制转换为String
对象,但实际对象并非String
类型。 - 算术异常(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
块中的参数是异常类型,在这个例子中是ArithmeticException
,e
是异常对象,可以通过e.getMessage()
获取异常的详细信息。
finally块的作用及执行时机
- 作用:
finally
块用于放置无论try
块中是否发生异常都必须执行的代码。常用于资源的清理,如关闭文件、数据库连接等。 - 执行时机:
- 如果
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
块中的代码都会执行。