📜  Java中的可抛出 getCause() 方法及示例

📅  最后修改于: 2022-05-13 01:54:31.562000             🧑  作者: Mango

Java中的可抛出 getCause() 方法及示例

Throwable 类getCause()方法是用于返回此 throwable 的原因的内置方法,如果无法确定发生异常的原因,则返回 null。此方法有助于获取由构造函数之一提供的原因或在使用 initCause(Throwable) 方法创建后设置的原因。 Throwable 类的所有 PrintStackTrace 方法都调用 getCause() 方法来确定 Throwable 或 Exception 的原因。简单来说,可以说这个方法返回了发生异常的原因。

句法:

public Throwable getCause()

返回值:此方法返回此 Throwable 的原因,如果无法确定原因,则返回null

下面的程序演示了 Throwable 类的 getCause() 方法:

示例 1:

// Java program to demonstrate
// the ensureCapacity() 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("Cause of Exception: "
                               + e.getCause());
        }
    }
  
    // method which divides two number
    public static void divide(int a, int b)
        throws Exception
    {
  
        try {
  
            // divide two numbers
            int i = a / b;
        }
  
        catch (ArithmeticException e) {
  
            // initializing new Exception with cause
            ArithmeticException exe = new ArithmeticException();
  
            exe.initCause(e);
  
            throw(exe);
        }
    }
}
输出:
Cause of Exception: java.lang.ArithmeticException: / by zero

示例 2:

// Java program to demonstrate
// the ensureCapacity() 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("Cause of Exception : "
                               + e.getCause());
        }
    }
  
    // method which divides two number
    public static void divide(int a, int b)
        throws Exception
    {
  
        // divide two numbers
        int i = a / b;
    }
}
输出:
Cause of Exception : null

参考:
https://docs.oracle.com/javase/10/docs/api/java Java()