Java
语言的特点有不下十种,例如:面向对象、安全性、健壮性、可移植性性等等,其中Java
的异常体系保证了Java
语言的健壮性。
# Java异常体系图
Java
万物皆对象,Throwable
类自然继承自Object
类。
# Error异常
Throwable
分为Error
和Exception
,Error
通常指的是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
(无此方法异常)
方法不存在或不可访问。