Java中的異常觸發都是通過throw主動丟擲
阿新 • • 發佈:2021-02-10
技術標籤:Java
問:自定義執行時異常,怎麼樣才能像API中那些執行時異常那樣,自動丟擲,我寫自定義執行時異常時,總是要自己主動throw,才會丟擲。
例如:執行下面程式碼時,控制會自動顯示異常資訊
答:API中那些異常也是API的作者自己主動丟擲,跟自己寫的自定義異常一樣。如果別人用你寫的程式碼當API呼叫,他也會覺得你定義的異常是自動丟擲的。Java中的任何異常都是throw主動丟擲的。
實現執行時異常丟擲步驟
1、自己定義一個異常類
2、當你想要在控制檯顯示對應異常資訊時,就throw new 異常類();
public class Demo { public static void main(String[] args) { //執行時,當呼叫這個方法,程式會進入對應的else if裡面,就會建立一個異常類物件,並丟擲, //JVM收到這個物件,就會在操作檯顯示異常資訊 judgeAgeRuntime(-1); //輸入這行程式碼就會出錯,因為該方法在宣告就丟擲編譯時異常, // 表示該方法可能有異常,當我在方法裡不想自己處理,讓呼叫該方法的人去處理, // 所以必須有人用try-catch手動接收並處理異常,否則編譯不會通過 judgeAge(10); } public static void judgeAgeRuntime(int age){ //判斷傳入的年齡是否合法 if (age > 150){ //不合法的年齡 throw new IllegalAgeRuntimeException("你活不了那麼大歲數,你就是普通人"); } else if (age < 0 ){ //不合法的年齡,用了異常類的有參構造方法 throw new IllegalAgeRuntimeException("你的年齡不可能是負數"); } } public static void judgeAge(int age) throws IllegalAgeException { //判斷傳入的年齡是否合法 if (age > 150){ //不合法的年齡 throw new IllegalAgeException("你活不了那麼大歲數,你就是普通人"); } else if (age < 0 ){ //不合法的年齡 throw new IllegalAgeException("你的年齡不可能是負數"); } } } //自定義的年齡不合法執行時異常類 //一定要繼承RuntimeException class IllegalAgeRuntimeException extends RuntimeException{ //裡面的內容就模仿JDK自帶的異常類內容就行了,不清楚原理 public IllegalAgeRuntimeException() { super(); } //每個異常類的構造方法都可以顯式傳入一個字串,表示異常資訊(原因)的說明 public IllegalAgeRuntimeException(String message) { super(message); } } //自定義的年齡不合法編譯時異常類 //一定要繼承RException class IllegalAgeException extends Exception{ public IllegalAgeException() { super(); } public IllegalAgeException(String message) { super(message); } }