引言
异常是在程序执行期间发生的事件,它会中断程序指令的正常流
Java异常介绍
异常时什么?就是指阻止当前方法或作用域继续执行的问题,当程序运行时出现异常时,系统就会自动生成一个Exception对象来通知程序进行相应的处理。Java异常的类型有很多种,下面我们就使用一张图来看一下Java异常的继承层次结构:

如图所示:Thowable是所有异常的父类,它有两个子类Error和Exception,除了Error及其子类和RuntimeException及其子类都属于检查异常,常见的检查异常有IOException、SQLException等
Java异常中的Error
Error一般表示编译时或者系统错误,例如:虚拟机相关的错误,系统崩溃(例如:我们开发中有时会遇到的OutOfMemoryError)等。这种错误无法恢复或不可捕获,将导致应用程序中断,通常应用程序无法处理这些错误,因此也不应该试图用catch来进行捕获。
Java异常中的Exception
上面我们有介绍,Java异常的分为受检查异常和运行时异常(不受检查异常)。下面我们展开介绍。
Java中的受检查异常
相信大家在写IO操作的代码的时候,一定有过这样的记忆,对File或者Stream进行操作的时候一定需要使用try-catch包起来,否则编译会失败,这是因为这些异常类型是受检查的异常类型。编译器在编译时,对于受检异常必须进行try...catch或throws处理,否则无法通过编译。常见的受检查异常包括:IO操作、ClassNotFoundException、线程操作等。
Java中的非受检查异常(运行时异常)
RuntimeException及其子类都统称为非受检查异常,例如:NullPointExecrption、NumberFormatException(字符串转换为数字)、ArrayIndexOutOfBoundsException(数组越界)、ClassCastException(类型转换错误)、ArithmeticException(算术错误)等。