Java基础面试题, Java 中 Exception 和 Error 有什么区别?
Java基础面试题, Java 中 Exception 和 Error 有什么区别?
QA
Step 1
Q:: Java 中 Exception 和 Error 有什么区别?
A:: Exception 和 Error 都是 Java 中 Throwable 的子类,表示程序中可能出现的异常情况。
1.
Exception:表示程序本身可以处理的异常,例如文件未找到(FileNotFoundException)、数组越界(ArrayIndexOutOfBoundsException)等。程序可以通过捕获这些异常并处理,从而保证程序的正常运行。
2.
Error:表示程序无法处理的严重问题,例如内存溢出(OutOfMemoryError)、栈溢出(StackOverflowError)等。这些通常是系统级别的问题,程序一般无法恢复,需要修复代码或系统环境。
Step 2
Q:: Java 中如何处理 Exception?
A:: Java 使用 try-
catch 块来处理 Exception。可以将可能抛出异常的代码放在 try 块中,并在 catch 块中捕获异常并进行处理。如果有多个异常可以抛出,可以使用多个 catch 块分别处理不同的异常类型。此外,还可以使用 finally 块来执行无论是否抛出异常都要执行的代码,比如资源释放操作。
Step 3
Q:: Java 中受检异常和非受检异常的区别是什么?
A:: 受检异常(Checked Exception)是编译时异常,必须在代码中显式处理(通过 try-
catch 或者在方法签名中声明 throws)。典型的例子包括 IOException 和 SQLException。非受检异常(Unchecked Exception)是运行时异常,编译时不强制处理,程序运行时可能会出现这些异常。典型的例子包括 NullPointerException 和 ArrayIndexOutOfBoundsException。
Step 4
Q:: 自定义异常在 Java 中如何实现?
A:: 可以通过扩展 Exception 或 RuntimeException 类来创建自定义异常类。通常,自定义异常类会包含构造函数和一些有用的方法来传递和处理异常信息。例如:
public class MyCustomException extends Exception {
public MyCustomException(String message) {
super(message);
}
}
可以在代码中通过 throw new MyCustomException("error message")
来抛出自定义异常。
Step 5
Q:: Java 中 try-with-
resources 是什么?如何使用?
A:: try-with-resources 是 Java 7 引入的一种自动管理资源的方式,主要用于自动关闭实现了 AutoCloseable 接口的资源,如文件流、数据库连接等。它的语法类似于传统的 try-
catch 语句,但它确保资源在使用后被自动关闭。示例:
try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
String line = br.readLine();
} catch (IOException e) {
e.printStackTrace();
}