1. NullPointerException(空指针异常)
当试图访问一个空对象的方法或属性时,会抛出空指针异常。
举例:
java
String str = null;
int length = str.length(); // 抛出 NullPointerException
2. ArrayIndexOutOfBoundsException(数组越界异常)
当试图访问数组中不存在的索引时,会抛出数组越界异常。
举例:
java
int[] arr = {1, 2, 3};
int element = arr[3]; // 抛出 ArrayIndexOutOfBoundsException
3. ArithmeticException(算术异常)
当进行非法的算术运算时,会抛出算术异常。
举例:
java
int result = 10 / 0; // 抛出 ArithmeticException
4. FileNotFoundException(文件未找到异常)
当试图打开一个不存在的文件时,会抛出文件未找到异常。
举例:
java
File file = new File("nonexistent.txt");
FileInputStream fis = new FileInputStream(file); // 抛出 FileNotFoundException
5. ClassCastException(类转换异常)
当试图将一个对象强制转换为不兼容的类型时,会抛出类转换异常。
举例:
java
Object obj = "Hello";
Integer num = (Integer) obj; // 抛出 ClassCastException
6. IllegalArgumentException(非法参数异常)
当传递给方法的参数不满足方法预期时,会抛出非法参数异常。
举例:
java
public void divide(int divisor) {
if (divisor == 0) {
throw new IllegalArgumentException("除数不能为零");
}
// 其他逻辑
}
7. IOException(输入输出异常)
当发生输入或输出操作失败时,会抛出输入输出异常。
举例:
java
FileInputStream fis = new FileInputStream("file.txt");
// 其他输入操作
} catch (IOException e) {
e.printStackTrace();
}
8. InterruptedException(中断异常)
当一个线程在等待、睡眠或被阻塞时被中断时,会抛出中断异常。
举例:
java
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
9. SQLException(SQL异常)
当在数据库操作过程中发生错误时,会抛出SQL异常。
举例:
java
Connection conn = DriverManager.getConnection(url, username, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM table");
// 其他数据库操作
} catch (SQLException e) {
e.printStackTrace();
}
10. NumberFormatException(数字格式异常)
当试图将一个字符串转换为数字,但字符串的格式不正确时,会抛出数字格式异常。
举例:
java
String str = "abc";
int num = Integer.parseInt(str); // 抛出 NumberFormatException
加粗样式
11. IllegalArgumentException(非法参数异常)
当传递给方法的参数不满足方法预期时,会抛出非法参数异常。
举例:
java
public void divide(int divisor) {
if (divisor == 0) {
throw new IllegalArgumentException("除数不能为零");
}
// 其他逻辑
}
12. IllegalStateException(非法状态异常)
当对象的状态不符合方法调用的前提条件时,会抛出非法状态异常。
举例:
java
public void start() {
if (isRunning) {
throw new IllegalStateException("服务已经启动");
}
// 启动服务
isRunning = true;
}
13. UnsupportedOperationException(不支持的操作异常)
当调用的方法不支持当前对象的操作时,会抛出不支持的操作异常。
举例:
java
List<String> list = Collections.singletonList("Hello");
list.add("World"); // 抛出 UnsupportedOperationException
14. ConcurrentModificationException(并发修改异常)
当在迭代集合或数组时,其他线程对其进行了修改,会抛出并发修改异常。
举例:
java
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));
for (String str : list) {
list.remove(str); // 抛出 ConcurrentModificationException
}
15. OutOfMemoryError(内存溢出错误)
当程序尝试申请更多内存,但可用内存不足时,会抛出内存溢出错误。
举例:
java
List<byte[]> list = new ArrayList<>();
while (true) {
list.add(new byte[1024 * 1024]); // 无限申请内存,最终抛出 OutOfMemoryError
}
16. StackOverflowError(栈溢出错误)
当方法递归调用层级过深,导致栈空间不足时,会抛出栈溢出错误。
举例:
java
public void recursive() {
recursive(); // 无限递归调用,最终抛出 StackOverflowError
}
17. ClassNotFoundException(类未找到异常)
当试图加载不存在的类时,会抛出类未找到异常。
举例:
java
Class.forName("com.example.NonexistentClass"); // 抛出 ClassNotFoundException
18. NoClassDefFoundError(找不到类定义错误)
当类存在于编译时的类路径,但在运行时找不到类定义时,会抛出找不到类定义错误。
举例:
java
public class Main {
public static void main(String[] args) {
NonexistentClass obj = new NonexistentClass(); // 编译通过,但运行时抛出 NoClassDefFoundError
}
}
以上是常见的异常提示,还有许多可能没有列举,如果发现不懂的异常最好先去看自己的程序逻辑