java自定义异常返回_Java自定义异常
我們可以創(chuàng)建自己(自定義)的異常類(lèi)。它們必須擴(kuò)展現(xiàn)有的異常類(lèi)。
class extends {
}
是異常類(lèi)名。在接下來(lái)的示例中,將創(chuàng)建一個(gè)MyException類(lèi),它擴(kuò)展了java.lang.Exception類(lèi)。
語(yǔ)法
自定義一個(gè)異常類(lèi)的語(yǔ)法如下:
public class MyException extends Exception {
}
異常類(lèi)與Java中的任何其他類(lèi)一樣。 通常不向異常類(lèi)中添加任何方法。許多可用于查詢(xún)異常對(duì)象狀態(tài)的有用方法已經(jīng)在Throwable類(lèi)中聲明了。
自定義異常類(lèi)構(gòu)造函數(shù)
通常,異常類(lèi)包括四個(gè)構(gòu)造函數(shù)。所有構(gòu)造函數(shù)將使用super關(guān)鍵字調(diào)用其超類(lèi)的相應(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ù)允許通過(guò)包裝/不包含詳細(xì)消息的另一個(gè)異常來(lái)創(chuàng)建異常。
自定義異常類(lèi)之后,就可以拋出MyException類(lèi)型的異常。
throw new MyException("Your message goes here");
可以在方法/構(gòu)造函數(shù)聲明中的throws子句中使用MyException類(lèi),或者在catch塊中使用參數(shù)類(lèi)型。
public void m1() throws MyException {
}
或捕獲異常類(lèi)
try {
}catch(MyException e) {
}
Throwable類(lèi)
下面的列表顯示了Throwable類(lèi)的一些常用方法。
Throwable類(lèi)是Java中所有異常類(lèi)的超類(lèi)。此表中顯示的所有方法在所有異常類(lèi)中都可用。
方法
方法描述
Throwable getCause()
返回異常的原因。如果未設(shè)置異常的原因,則返回null。
String getMessage()
返回異常的詳細(xì)消息。
StackTraceElement[] getStackTrace()
返回堆棧跟蹤元素的數(shù)組。
Throwable initCause(Throwable cause)
設(shè)置異常的原因。有兩種方法可以將異常設(shè)置為異常的原因。 其他方法是使用構(gòu)造函數(shù),它接受原因作為參數(shù)。
void printStackTrace()
在標(biāo)準(zhǔn)錯(cuò)誤流上打印堆棧跟蹤。
void printStackTrace(PrintStream s)
將堆棧跟蹤打印到指定的PrintStream對(duì)象。
void printStackTrace(PrintWriter s)
將堆棧跟蹤打印到指定的PrintWriter對(duì)象。
String toString()
返回異常對(duì)象的簡(jiǎn)短描述。
實(shí)例-1
以下代碼演示了使用異常類(lèi)的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("有異常或錯(cuò)誤發(fā)生,鬼知道發(fā)生了什么,先拋出來(lái)再說(shuō)!");
}
}
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é)果。
實(shí)例-2
以下代碼顯示了如何將異常的堆棧跟蹤寫(xiě)入字符串中。
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("有異常或錯(cuò)誤發(fā)生,鬼知道發(fā)生了什么,先拋出來(lái)再說(shuō)!");
}
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é)果。
¥ 我要打賞
糾錯(cuò)/補(bǔ)充
收藏
加QQ群啦,易百教程官方技術(shù)學(xué)習(xí)群
注意:建議每個(gè)人選自己的技術(shù)方向加群,同一個(gè)QQ最多限加 3 個(gè)群。
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的java自定义异常返回_Java自定义异常的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: firefox 53支持java_Sel
- 下一篇: java美元兑换,(Java实现) 美元