Java异常类

Java异常类教程

我们在 Java 异常 语法的教程中了解到,catch 语句块中,catch 后面的 () 里面是一个 Exception 类或者是其子类。那么在 Java 中有哪些异常类呢?又有哪些异常类是能够被捕获的呢?

05 异常结构.png

我们可以看到,在 Java 语言 中,有两个最常用的异常类,一个是 Exception,一个是 Error。它们都是 Throwable 的子类。

Exception 表示的是程序中出现了问题,可以直接使用 try … catch 来捕获处理。Error 一般值 JVM 侧错误,程序中无法处理。

Java常见异常

类名 描述
IOException 输入输出异常
ArithmeticExecption 算术异常类
NullPointerException 空指针异常类
ClassCastException 类型强制转换异常
SQLException 操作数据库异常
FileNotFoundException 文件未找到异常
NegativeArrayException 数组负下标异常
ArrayIndexOutOfBoundsException 数组下标越界异常
NumberFormatException 字符串转换为数字异常

Java自定义异常类

我们在上面列出了好多异常类,如果在生产环境中,异常类型不能够满足我们的需求,或者我们想要拥有自定义的异常类型。我们可以根据自己的需求来定义自己的异常类。

语法

class 异常类名称 extends Exception{ public 异常类名称(String message){ //dosomething } }

自定义异常类的时候,需要继承 Exception,那么自定义的异常类就是异常的子类。我们定义了一个有参的构造函数,在构造函数里面我们可以实现自己的逻辑。比如将异常信息打出等等。

案例

package com.haicoder.net.except; public class MyException extends Exception { public MyException(String message) { System.out.println(message); } }

异常信息打出

Java 语言的异常信息,我们除了可以自己用 System.out.println(异常对象) 外,我们还可以用 e.printStackTrace() 将异常信息打出,这种方式是异常信息打印最完整的。

案例

package com.haicoder.net.except; public class ExceptionTest { public static void main(String[] args) { System.out.println("嗨客网(www.haicoder.net)\n"); System.out.println("程序开始"); try { int i = 2; int j = 0; int m = i / j; } catch (Exception e) { System.out.println("异常信息:" + e.getMessage()); System.out.println("=================="); e.printStackTrace(); } System.out.println("程序结束"); } }

运行结果

06 异常信息打印.png

调用 e.getMessage() 方法只打印出了一个除以 0 的提示,而调用 e.printStackTrace() 方法,将异常的详细信息打印了出来。我们可以看到代码在哪个类,第几行。

Java异常类总结

Java 异常都捕获 Exception 类型或者是它的子类,我们在捕获异常信息的时候,可以使用已经存在的异常类也可以自己定义异常类,自己定义异常类的时候,需要继承 Exception 类。