java API里面自带很多种Exception,Throwable类是各种exception的父类,其关系如下:
我们可以通过继承Exception或其子类定义自己的Exception。
Exception子类分三种:System error, exception, 和runtime exception
System error例子如下:
LinkageError: 一个类调用了另一个类,但当这个类编译后另一个类发生变化导致无法调用
VirtualMachineError: JVM出现故障或内存不足
System error很少出现,但是一旦出现很难在不影响用户使用的情况下解决
Exception例子如下:
classNotFoundException:调用一个不存在的类导致
IOException:和input/output相关的各类Exception
Exception是源代码出错导致,纠正即可
Runtime Exception例子如下:
ArithmeticException:整数除以0造成(浮点数除以0不会出现Exception,相反,结果为infinity)
NullPointerException:使用空指针访问一个对象导致
IndexOutOfBoundsException:数组下标越界
illegalArgumentationException:无法实现的类型转换,如int强转String
此类异常属于unchecked类型,一般是程序bug导致,java不允许使用try-catch语句处理unchecked异常