Java中常见的异常类有哪些?

运行时异常如NullPointerException、ArrayIndexOutOfBoundsException由程序逻辑错误引起,编译器不要求处理;2. 检查异常如IOException、SQLException必须在编译期捕获或声明;3. 错误如OutOfMemoryError、StackOverflowError由JVM抛出,通常无法恢复。

Java中的异常类主要分为两大类:检查异常(checked exceptions)和非检查异常(unchecked exceptions),后者包括运行时异常(runtime exceptions)和错误(errors)。以下是常见的异常类,按类别划分:

1. 运行时异常(RuntimeException)

这些异常通常由程序逻辑错误引起,编译器不要求必须处理。

常见子类包括:

  • NullPointerException:尝试访问空对象的成员变量或方法。
  • ArrayIndexOutOfBoundsException:数组下标越界。
  • ClassCastException:类型强制转换错误。
  • IllegalArgumentException:传递非法参数给方法。
  • NumberFormatException:字符串无法转换为数字类型,如调用 Integer.parseInt("abc")。
  • ArithmeticException:算术异常,例如除以零。
  • IllegalStateException:对象处于不适当的状态,无法执行请求的操作。

2. 检查异常(Checked Exceptions)

这类异常在编译阶段就必须处理,要么捕获,要么声明抛出。

常见例子有:

  • IOException:输入输出操作失败,如文件读写错误。
  • FileNotFoundException:试图打开不存在的文件。
  • SQLException:数据库操作出错。
  • InterruptedException:线程在等待、休眠或加入时被中断。
  • ClassNotFoundException:找不到指定的类,常出现在反射操作中。

3. 错误(Error)

属于严重问题,通常不是程序能处理的,一般由JVM抛出。

典型代表:

  • OutOfMemoryError:堆内存不足。
  • StackOverflowError:栈溢出,通常因递归太深导致。
  • NoClassDefFoundError:类在编译期存在,但运行期找不到定义。
  • VirtualMachineError:虚拟机出现内部错误或资源耗尽。

理解这些常见异常有助于编写更健壮的代码。对于运行时异常,应通过良好的编程习惯避免;对于检查异常,必须显式处理;而错误一般无法恢复,程序通常会终止。

基本上就这些。掌握它们的触发场景和处理方式,对日常开发很有帮助。