许多java初学者都会面临和博主一样的困惑,那便是在运行程序的时候会遇到各种各样的异常,但是自己却无法精确有效地定位那些异常的原因。今天博主便综合之前学习的经验和现有的一些资料来总结一下java异常的类型。
1.所有异常的爸爸:java.lang.Throwable
java是一门万物皆为对象的语言,其中异常也不例外。Throwable是所有异常的父类,我们平时遇到的所有异常都是这个类的子类。
下图便是一些基本常见的异常子类与其关系图。
(图片来源于网络)
2.异常类的三种主要类型:System error(系统错误),Exception(异常),RuntimeException(运行时异常)
(1)system error
系统错误是由 Java Virtual Machine(java虚拟机)抛出的,用Error类来代表。这类错误一般代表系统的内部错误(jvm自己的错误),但是这类问题很少发生,反正我还没有遇到过。如果遇到,可能是你所搭建的开发环境有问题,好好检察一下环境。
(2)Exception
异常描述的是由程序和外部环境所引起的一些错误,但是能被程序捕获和处理。也就是说这种异常是可以被程序员处理的!
(3)RuntimeException
运行时错误是java程序员所会遇到次数最多的错误,因为这种错误一般是代表着是程序员在设计程序中所犯的错误。常见的错误有:空指针错误(NullPointer),数组越界错误(IndexOutOfBounds),算数错误(Arithmetic),非法传参(IleagleArgument)错误...等等
3.两大分类:检查异常(checked exception)和免检查异常 (unchecked exception)
(2)unchecked exception
免检查异常就是需要程序员自己去捕获处理的异常,例如程序中总会有一些虽然符合机器逻辑但是并不符合我们业务逻辑的错误。这些错误虽然对于程序来说可以继续运行,但是并不是向我们所期望的方向所运行。这时候自定义异常继承Exception然后再在catch语句块中去添加处理措施。