Exception类是java中所有异常类的父类,比如我们经常见到的NullPointerException所继承的父类RuntimeException就是继承于Exception,Exception类有四个构造方法,子异常类在继承Exception类后,可以自由选择调用其中的哪个构造方法,四个构造方法分别如:
构造方法摘要 | |
Exception() 构造详细消息为 null 的新异常。 | |
Exception(String message) 构造带指定详细消息的新异常。 | |
Exception(String message, Throwable cause) 构造带指定详细消息和原因的新异常。 | |
Exception(Throwable cause) 根据指定的原因和 (cause==null ? null : cause.toString()) 的详细消息构造新异常(它通常包含 cause 的类和详细消息)。 |
抛出和捕获异常:
4.1、把异常交给JVM处理:
public class ExceptionTest { public static void execute() throws Exception { System.out.println("execute..."); throw new Exception(); } public static void main(String[] args) throws Exception { execute(); } }
4.2、或者使用try catch语句块捕获异常:
public class ExceptionTest { public static void execute() throws Exception { System.out.println("execute..."); throw new Exception(); } public static void main(String[] args) { try { execute(); } catch (Exception e1) { e1.printStackTrace(); } } }
异常使用注意事项:
当使用多个catch语句块来捕获异常时,需要将父类的catch语句块放到子类型的catch块之后,这样才能保证后续的catch可能被执行,否则子类型的catch将永远无法到达,Java编译器会报编译错误。
如果try语句块中存在return语句,那么首先会执行finally语句块中的代码,然后才返回。
如果try语句块中存在System.exit(0)语句,那么久不会执行finally语句块的代码了,因为System.exit(0)会终止当前运行的JVM。程序在JVM终止前结束执行。