异常:指Java程序运行时所发生的非正常情况或错误。我们都知道Java是一种OOP程序设计语言,程序中把现实事务抽象成一个个的对象来处理,而同理对于异常,所有异常的根类为Java.lang.Throwable。
Java对异常也进行了分类,Throwable下面派生了两个子类:Error和Exception:
Error表示应用程序本身无法克服或者恢复的严重问题、程序自己不能处理,如内存溢出、线程死锁等问题;
Exception表示程序本身还能够处理,其中又分为系统异常和普通异常:
系统异常是软件本身缺陷所导致的问题,可能是由于软件开发人员考虑不周全导致的问题,用户无法处理这种问题,但这种问题还可以让软件系统继续运行或死掉,如数组越界(ArrayIndexOutOfBoundsException)、空指针异常(NullPointerException)、类型转换异常(ClassCastException)。系统异常编译器不强制使用try...catch或throws声明,所以系统异常可以处理可以不处理,因此系统异常亦称为unchecked异常;
普通异常是程序运行环境的变化或异常所导致的问题,如网络断线、硬盘空间不足等。对普通异常,编译器必须try...catch处理或throws声明抛给上层处理,因此普通异常也称为checked异常。