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 的類和詳細消息)。 |
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(); } }
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終止前結束執行。