当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。