Java 中的异常(Exception)又称为例外,是一个在程序执行期间发生的事件,它中断正在执行的程序的正常指令流。为了能够及时有效地处理程序中的运行错误,必须使用异常类。
Throwable是Java中异常的根类,它有两个子类:
Exception:是程序本身可以处理的异常。异常处理通常就是针对这种类型异常的处理。它也可以细分为两个方向:
非检查异常(运行时异常):编译器不要求强制处理的异常,程序员可以不管也可以捕获。
例:空指针异常、数组下标越界、算数异常、类型转换异常等等
检查异常:编译器要求必须处理的异常,否则通不过变异
例:IO异常、SQL异常
Error:是程序无法处理的错误,表示运行应用程序中较严重的问题。常见的有:虚拟机错误、内存溢出、线程死锁。
1 异常类型 2 Throwable 3 错误Error 4 错误不是异常,程序无法处理的错误,表示运行应用程序中较严重的问题。 5 常见的有:虚拟机错误、内存溢出(堆栈溢出)、线程死锁。 6 错误类 7 VirtualMachineError 虚拟机错误 8 OutOfMemoryError 内存溢出错误类 9 StackOverflowError 栈溢出错误类 10 LinkageError 链接错误类 11 NoClassDefFoundError 类定义未找到错误类 12 AWTError 图形用户界面错误类 13 异常Exception 14 是程序本身可以处理的异常。异常处理通常就是针对这种类型异常的处理。 15 检查性异常 16 用户错误或问题引起的异常,这是程序员无法预见的,是必须进行处理的异常,如果不处理,程序就不能编译通过。 17 java内置的非运行时异常 18 ClassNotFoundException 应用程序试图加载类时,找不到相应的类,抛出该异常。 19 InterruptedException 一个线程被另一个线程中断,抛出该异常。 20 IOException I/O 异常的根类 21 EOFException 文件结束 22 FileNotFoundException 找不到文件 23 SQLException 操作数据库异常 24 NoSuchFieldException 请求的变量不存在 25 NoSuchMethodException 请求的方法不存在 26 CloneNotSupportedException 当调用 Object 类中的 clone 方法克隆对象,但该对象的类无法实现 Cloneable 接口时,抛出该异常。 27 IllegalAccessException 拒绝访问一个类的时候,抛出该异常。 28 InstantiationException 当试图使用 Class 类中的 newInstance 方法创建一个类的实例,而指定的类对象因为是一个接口或是一个抽象类而无法实例化时,抛出该异常。 29 运行时异常 30 一般由程序逻辑错误引起,是可能被程序员避免的异常。在编译时被忽略,程序中可以选择捕获处理,也可以不处理。 31 RuntimeException 32 NullPointerException 当应用程序试图在需要对象的地方使用 null 时,抛出该异常 33 ArithmeticException 当出现异常的运算条件时,抛出此异常。例如,一个整数"除以零"时,抛出此类的一个实例。 34 ClassCastException 当试图将对象强制转换为不是实例的子类时,抛出该异常。 35 NumberFormatException 当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。 36 IllegalMonitorStateException 抛出的异常表明某一线程已经试图等待对象的监视器,或者试图通知其他正在等待对象的监视器而本身没有指定监视器的线程。 37 IndexOutOfBoundsException 指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。 38 StringIndexOutOfBoundsException 此异常由 String 方法抛出,指示索引或者为负,或者超出字符串的大小。 39 ArrayIndexOutOfBoundsException 用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。 40 IllegalArgumentException 抛出的异常表明向方法传递了一个不合法或不正确的参数。 41 UnsupportedOperationException 当不支持请求的操作时,抛出该异常。 42 ArrayStoreException 试图将错误类型的对象存储到一个对象数组时抛出的异常。 43 IllegalStateException 在非法或不适当的时间调用方法时产生的信号。换句话说,即 Java 环境或 Java 应用程序没有处于请求操作所要求的适当状态下。 44 IllegalThreadStateException 线程没有处于请求操作所要求的适当状态时抛出的异常。 45 NegativeArraySizeException 如果应用程序试图创建大小为负的数组,则抛出该异常。 46 SecurityException 由安全管理器抛出的异常,指示存在安全侵犯。 47 用户自定义的Exception异常 48 所有异常都必须是 Throwable 的子类。 49 如果希望写一个检查性异常类,则需要继承 Exception 类。 50 如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。