當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Throwable Class用法及代碼示例


類和對象是基本概念麵向對象編程圍繞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

構造函數任何類都可以具有這三種或全部三種類型的構造函數中的任何一種。它們是默認的、參數化的和非參數化的構造函數。該類主要定義了以下構造函數:

公共建設者

  1. Throwable():它是一個非參數化構造函數,它構造一個新的 Throwable,並將 null 作為其詳細消息。
  2. 可拋出(字符串消息):它是一個參數化構造函數,它使用特定的詳細消息構造一個新的 Throwable。
  3. Throwable(字符串消息,可拋出原因):它是一個參數化構造函數,它使用特定的詳細消息和原因構造一個新的 Throwable。
  4. 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/



相關用法


注:本文由純淨天空篩選整理自Slash_IT大神的英文原創作品 Throwable Class in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。