類和對象是基本概念麵向對象編程圍繞real-life實體。類是用戶定義的藍圖或原型,從中創建對象。它表示一種類型的所有對象所共有的一組屬性或方法。在這篇文章中,我們將討論可投擲類、其構造函數以及該類中可用的不同方法。
可投擲class 是 Java 語言中每個錯誤和異常的超類。隻有屬於該類的子類之一的對象才會被任何 “Java Virtual Machine” 拋出,或者可能被 Java throw 語句拋出。出於在編譯時檢查異常的動機,可投擲並且 Throwable 的任何子類如果不是 Error 或 RuntimeException 的子類,則被視為檢查異常.
Throwable類是Java的根類異常層次結構並且被兩個子類繼承:
1.異常
2.錯誤
throwable 類實現MarkerThrowable 的直接已知類是錯誤和異常。
Throwable 包含其線程創建時的執行堆棧的快照。它還可以包含一個消息字符串,提供有關錯誤的更多信息。它還可以抑製其他可拋出對象的傳播。
如果用戶想要創建自己的自定義 Throwable,那麽他/她可以擴展 Throwable 類。
例子:
類 MyThrowable 擴展了 Throwable{
//這裏用戶可以創建自己的自定義 throwable
}
GFG類{
公共無效test()拋出MyThrowable{
//創建的自定義 throwable 可以按如下方式使用
拋出新的MyThrowable();
}
}
java.lang.Throwable 類的類聲明如下:
Java
public class Throwable
extends Object
implements Serializable
構造函數:任何類都可以具有這三種或全部三種類型的構造函數中的任何一種。它們是默認的、參數化的和非參數化的構造函數。該類主要定義了以下構造函數:
公共建設者
- Throwable():它是一個非參數化構造函數,它構造一個新的 Throwable,並將 null 作為其詳細消息。
- 可拋出(字符串消息):它是一個參數化構造函數,它使用特定的詳細消息構造一個新的 Throwable。
- Throwable(字符串消息,可拋出原因):它是一個參數化構造函數,它使用特定的詳細消息和原因構造一個新的 Throwable。
- Throwable(可拋出原因):它是一個參數化構造函數,通過使用 toString() 方法將 case 轉換為 String 來構造一個具有特定原因和原因詳細消息的新 Throwable。
受保護的構造函數
1. Throwable(字符串消息,可拋出原因,布爾enableSuppression,布爾writableStackTrace):It 構造一個新的 throwable,其中包含指定的詳細消息、原因、啟用或禁用的抑製以及啟用或禁用的可寫堆棧跟蹤。
參數是:-
message - 詳細消息。
原因——原因。 (允許空值,表示原因不存在或未知。)
enableSuppression - 是否啟用或禁用抑製
writableStackTrace - 堆棧跟蹤是否可寫。
Methods: 除了上麵提到的構造函數之外, throwable 類中還提供了許多預定義的方法。他們是:
1. Throwable addSuppressed():此方法將指定的異常附加到被抑製的異常中,以傳遞此異常。
句法:
公共最終無效addSuppressed(可拋出異常)
返回:該方法不返回任何內容。
2. Throwable fillInStackTrace():填充執行堆棧跟蹤。此方法記錄有關當前 Throwable 對象中當前線程的堆棧幀的當前狀態的信息。
句法:
公共可拋出的 fillInStackTrace ()
返回: 對當前 Throwable 實例的引用。
3. Throwable getCause():它返回通過需要 Throwable 的構造函數之一提供的原因,或者在創建後使用 initCause() 方法設置的原因。
句法:
公共 Throwable getCause ()
返回: 當前 Throwable 的原因。如果原因不存在或未知,則返回 null。
4. Throwable getLocalizedMessage():此方法創建當前 Throwable 的本地化說明。
句法:
公共字符串 getLocalizedMessage ()
返回: 當前 Throwable 的本地化說明
5. Throwable getMessage():返回當前 throwable 的詳細消息字符串。
句法:
公共字符串 getMessage()
返回:當前 Throwable 實例的詳細消息字符串(也可能返回 null)
6. Throwable getStackTrace():此方法提供對 printStackTrace() 打印的堆棧跟蹤信息的編程訪問。它返回一組堆棧跟蹤元素,每個元素代表一個堆棧幀。數組的第零個元素(假設數組的長度非零)是序列中的最後一個方法調用。它還表示堆棧的頂部,並且是創建和拋出此 throwable 的點。數組的最後一個元素(假設數組的長度非零)是序列中的第一個方法調用,它代表堆棧的底部。
句法:
公共 StackTraceElement[] getStackTrace ()
返回: 表示與當前 Throwable 相關的堆棧跟蹤的堆棧跟蹤元素數組。
7. Throwable getSuppressed():返回一個包含所有被抑製的異常的數組,以便傳遞此異常。如果沒有抑製異常或禁用抑製,則返回空數組。
語法:public Final Throwable[] getSuppressed ()
返回: 包含所有被抑製以傳遞此異常的異常的數組。
8. Throwable initCause():將當前Throwable的原因初始化為指定值。該方法最多可以調用一次。它通常在構造函數內調用,或者在創建可拋出對象後立即調用。
語法:public Throwable initCause(可拋出原因)
參數:
Throwable Cause- 當前 Throwable 的原因。
投擲:
1.IllegalArgumentException:如果 Cause 是當前的 throwable,則拋出此異常,因為 throwable 不能是其自身的 Cause。
2. IllegalStateException:如果已在當前的 throwable 上調用此方法,則會發生此異常。
返回: 對當前 Throwable 實例的引用。
9. Throwable printStackTrace():將當前的 throwable 及其回溯打印到標準錯誤流。
語法:public void printStackTrace ()
返回:該方法不返回任何內容。
10. Throwable printStackTrace():將當前的 throwable 及其回溯打印到指定的打印編寫器。
語法:public void printStackTrace (PrintWriter s)
參數: PrintWriter - 用於輸出的PrintWriter
返回:該方法不返回任何內容。
11. Throwable printStackTrace():將當前的 throwable 及其回溯打印到指定的打印流。
語法:public void printStackTrace (PrintStream s)
參數: PrintStream - 用於輸出的PrintStream
返回:該方法不返回任何內容。
12. Throwable setStackTrace():此方法設置將由getStackTrace()返回並由printStackTrace()及相關方法打印的堆棧跟蹤元素。
語法:public void setStackTrace (StackTraceElement[] stackTrace)
參數:StackTraceElement - 這些是與當前 Throwable 關聯的堆棧跟蹤元素。
投擲:
NullPointerException - 如果 stackTrace 為 null 或者 stackTrace 的任何元素為 null
返回:
該方法不返回任何內容。
13. Throwable toString():此方法返回當前可拋出的簡短說明。
語法:public String toString ()
返回: 當前可拋出的字符串表示形式。
下麵的程序演示了Throwable類的toString()方法:
Java
// Java program to demonstrate
// the toString() Method.
import java.io.*;
class GFG {
// Main Method
public static void main(String[] args)
throws Exception
{
try {
testException();
}
catch (Throwable e) {
// Print using tostring()
System.out.println("Exception: "
+ e.toString());
}
}
// Method which throws Exception
public static void testException()
throws Exception
{
throw new Exception(
"New Exception Thrown");
}
}
Exception: java.lang.Exception: New Exception Thrown
下麵的程序演示了java.lang.Throwable類的getMessage()方法:
Java
// Java program to demonstrate
// the getMessage() Method.
import java.io.*;
class GFG {
// Main Method
public static void main(String[] args)
throws Exception
{
try {
// Divide the numbers
divide(2, 0);
}
catch (ArithmeticException e) {
System.out.println(
"Message String = "
+ e.getMessage());
}
}
// Method which divides two numbers
public static void divide(int a, int b)
throws ArithmeticException
{
int c = a / b;
System.out.println("Result:" + c);
}
}
Message String = / by zero
參考: https://docs.oracle.com/javase/9/docs/api/java/lang/Throwable.html/
相關用法
- Java Throwable addSuppressed()用法及代碼示例
- Java Throwable fillInStackTrace()用法及代碼示例
- Java Throwable getCause()用法及代碼示例
- Java Throwable getLocalizedMessage()用法及代碼示例
- Java Throwable getMessage()用法及代碼示例
- Java Throwable getStackTrace()用法及代碼示例
- Java Throwable getSuppressed()用法及代碼示例
- Java Throwable initCause()用法及代碼示例
- Java Throwable printStackTrace()用法及代碼示例
- Java Throwable setStackTrace()用法及代碼示例
- Java Throwable toString()用法及代碼示例
- Java Throwable.getLocalizedMessage()用法及代碼示例
- Java Thread activeCount()用法及代碼示例
- Java Thread checkAccess()用法及代碼示例
- Java Thread currentThread()用法及代碼示例
- Java Thread destroy()用法及代碼示例
- Java Thread dumpStack()用法及代碼示例
- Java Thread enumerate()用法及代碼示例
- Java Thread getContextClassLoader()用法及代碼示例
- Java Thread getDefaultUncaughtExceptionHandler()用法及代碼示例
- Java Thread getId()用法及代碼示例
- Java Thread getName()用法及代碼示例
- Java Thread getPriority()用法及代碼示例
- Java Thread getStackTrace()用法及代碼示例
- Java Thread getState()用法及代碼示例
注:本文由純淨天空篩選整理自Slash_IT大神的英文原創作品 Throwable Class in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。