W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
我們可以創(chuàng)建我們自己的異常類。
它們必須擴(kuò)展現(xiàn)有的異常類。
<Class Modifiers> class <Class Name> extends <Exception Class Name> { }
<Class Name> is the exception class name.
創(chuàng)建一個(gè)MyException類,它擴(kuò)展了java.lang.Exception類。
語法如下:
public class MyException extends Exception { }
異常類與Java中的任何其他類一樣。通常,我們不向我們的異常類中添加任何方法。
許多有用的方法可以用來查詢異常對(duì)象的狀態(tài)在Throwable類中聲明。
通常,我們?yōu)槲覀兊漠惓n惏ㄋ膫€(gè)構(gòu)造函數(shù)。
所有構(gòu)造函數(shù)將使用super關(guān)鍵字調(diào)用其超類的相應(yīng)構(gòu)造函數(shù)。
class MyException extends Exception { public MyException() { super(); } public MyException(String message) { super(message); } public MyException(String message, Throwable cause) { super(message, cause); } public MyException(Throwable cause) { super(cause); } }
第一個(gè)構(gòu)造函數(shù)創(chuàng)建一個(gè)具有null的異常作為其詳細(xì)消息。
第二個(gè)構(gòu)造函數(shù)創(chuàng)建一個(gè)具有詳細(xì)消息的異常。
第三和第四個(gè)構(gòu)造函數(shù)允許您通過包裝/不包含詳細(xì)消息的另一個(gè)異常來創(chuàng)建異常。
您可以拋出類型MyException的異常。
throw new MyException("Your message goes here");
我們可以在方法/構(gòu)造函數(shù)聲明中的throws子句中使用MyException類,或者在catch塊中使用參數(shù)類型。
public void m1() throws MyException { }
或捕獲異常類
try { }catch(MyException e) { }
下面的列表顯示了Throwable類的一些常用方法。
Throwable類是Java中所有異常類的超類。此表中顯示的所有方法在所有異常類中都可用。
以下代碼演示了對(duì)異常類使用printStackTrace()方法。
public class Main { public static void main(String[] args) { try { m1(); } catch (MyException e) { e.printStackTrace(); // Print the stack trace } } public static void m1() throws MyException { m2(); } public static void m2() throws MyException { throw new MyException("Some error has occurred."); } } class MyException extends Exception { public MyException() { super(); } public MyException(String message) { super(message); } public MyException(String message, Throwable cause) { super(message, cause); } public MyException(Throwable cause) { super(cause); } }
上面的代碼生成以下結(jié)果。
以下代碼顯示了如何將異常的堆棧跟蹤寫入字符串。
import java.io.PrintWriter; import java.io.StringWriter; public class Main { public static void main(String[] args) { try { m1(); } catch (MyException e) { String str = getStackTrace(e); System.out.println(str); } } public static void m1() throws MyException { m2(); } public static void m2() throws MyException { throw new MyException("Some error has occurred."); } public static String getStackTrace(Throwable e) { StringWriter strWriter = new StringWriter(); PrintWriter printWriter = new PrintWriter(strWriter); e.printStackTrace(printWriter); // Get the stack trace as a string String str = strWriter.toString(); return str; } } class MyException extends Exception { public MyException() { super(); } public MyException(String message) { super(message); } public MyException(String message, Throwable cause) { super(message, cause); } public MyException(Throwable cause) { super(cause); } }
上面的代碼生成以下結(jié)果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: