Java语言的特点有不下十种,例如:面向对象、安全性、健壮性、可移植性性等等,其中Java的异常体系保证了Java语言的健壮性。

# Java异常体系图

Java万物皆对象,Throwable类自然继承自Object类。

Throwable
Throwable
Error
Error
Exception
Exception
RuntimeException
RuntimeException
CheckedException
CheckedException
Java异常体系简图
Java异常体系简图
Viewer does not support full SVG 1.1

# Error异常

Throwable分为ErrorExceptionError通常指的是JVM的错误,导致这类错误,通常是我们自身代码写的有问题,并且这类错误,我们并不能够进行异常处理,有如下几种:

  • StackOverError(栈内存溢出异常)

递归无出口,将会导致栈爆满。

  • OutOfMemoryError(堆内存溢出异常)

无限创建对象时,将会导致堆爆满。

还有一种说法叫做内存泄漏,是指创建的对象既没有被使用,也没有被回收的情况。

# RuntimeException异常

Exception即运行时异常,可以进行捕捉并进行处理,包含两种异常,其中RuntimeException被称为运行时异常,又被叫做逻辑异常,通常是由于代码的逻辑写的不够严谨导致,有如下几种:

  • ArrayIndexOutOfBoundsException(数组越界异常)
int[] a = new int[3];
System.out.println(a[4]);
  • NullPointerException(空指针异常)
String s = null;
System.out.println(s.toString());
  • ClassCastException(类型转换异常)
String str = new Integer(1);
  • ArithmeticException(算数异常)
int a = 3/0;
  • NumberFormatException(数字格式异常)
int a = Integer.parseInt("3f");

# CheckedException异常

CheckedException异常又被叫做非运行时异常,导致此错误的原因并不是代码逻辑的错误,而是由于一些外部原因导致,例如要读取的文件并不存在,有如下几种:

  • IOException(输入输出异常)

在读写文件时。

  • SQLException(数据库异常)

执行SQL方法时。

  • FileNotFoundException(文件未发现异常)

在读文件路径时,通常是找不到“拒绝访问”和“找不到指定路径”。

  • NoSuchFiledException(无此成员异常)

在反射获取类成员信息时。

  • NoSuchMethodException(无此方法异常)

方法不存在或不可访问。