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


Java Throwable addSuppressed()用法及代碼示例


Throwable類的addSuppressed?(Throwable異常)方法用於將異常附加到為了傳遞此異常而被抑製的異常之後。此方法是線程安全的方法。通常由try-catch子句調用此方法。除非通過構造函數禁用,否則將啟用Throwable的抑製行為;並且當禁用抑製時,此方法除了驗證其參數外不執行其他操作。

在try-finally塊的默認行為中,我們有兩個異常,原始的異常被抑製,而finally塊的異常被顯示。在某些情況下,使用finally塊來關閉資源,在這種情況下,我們希望看到原始異常,除了final塊中的某些異常,它關閉了資源並失敗了,因此我們可以添加通過這種方法。

如果存在多個同級例外,並且隻能傳播一個,則可以使用此方法來推廣該方法。


用法:

public final void addSuppressed?(Throwable exception)

參數:此方法僅接受一個我們要添加為抑製異常的參數異常。

返回值:此方法不返回任何內容。

異常:此方法引發以下異常:

  • IllegalArgumentException:如果此拋出拋出異常;一個可拋物不能壓製自己。
  • NullPointerException:如果exception為null。

以下示例程序旨在說明addSuppressed?()方法:

示例1:

// Java program to demonstrate 
// the addSuppressed() Method. 
  
import java.io.*; 
  
class GFG { 
  
    // Main Method 
    public static void main(String[] args) 
        throws Exception 
    { 
  
        try { 
  
            testException(); 
        } 
  
        catch (Throwable e) { 
  
            // get StackTraceElements 
            Throwable[] suppExe 
                = e.getSuppressed(); 
  
            // print element of suppExe 
            for (int i = 0; i < suppExe.length; i++) { 
  
                System.out.println("Suppressed Exceptions:"); 
                System.out.println(suppExe[i]); 
            } 
        } 
    } 
  
    // method which throws Exception 
    public static void testException() 
        throws Exception 
    { 
  
        // creating a suppressed Exception 
        Exception 
            suppressed 
            = new ArithmeticException(); 
  
        // creating a IOException object 
        final Exception exe = new Exception(); 
  
        // adding suppressed Exception 
        // using addSuppressed method 
        exe.addSuppressed(suppressed); 
  
        // throwing IOException 
        throw exe; 
    } 
}
輸出:
Suppressed Exceptions:
java.lang.ArithmeticException

示例2:

// Java program to demonstrate 
// the addSuppressed() Method. 
  
import java.io.*; 
  
class GFG { 
  
    // Main Method 
    public static void main(String[] args) 
        throws Exception 
    { 
  
        try { 
  
            testException(); 
        } 
  
        catch (Throwable e) { 
  
            // get StackTraceElements 
            Throwable[] suppExe 
                = e.getSuppressed(); 
  
            System.out.println("Suppressed Exceptions:"); 
  
            // print element of suppExe 
            for (int i = 0; i < suppExe.length; i++) { 
  
                System.out.println(suppExe[i]); 
            } 
        } 
    } 
  
    // method which throws Exception 
    public static void testException() 
        throws Exception 
    { 
  
        // creating a IOException object 
        final Exception exe = new Exception(); 
  
        // adding suppressed Exception 
        // using addSuppressed method 
        exe.addSuppressed(new ArithmeticException()); 
        exe.addSuppressed(new IndexOutOfBoundsException()); 
        exe.addSuppressed(new ClassNotFoundException()); 
        exe.addSuppressed(new IOException()); 
  
        // throwing IOException 
        throw exe; 
    } 
}
輸出:
Suppressed Exceptions:
java.lang.ArithmeticException
java.lang.IndexOutOfBoundsException
java.lang.ClassNotFoundException
java.io.IOException

示例3:顯示IllegalArgumentException

// Java program to demonstrate 
// Exception IllegalArgumentException 
// the addSuppressed() Method. 
  
import java.io.*; 
  
class GFG { 
  
    // Main Method 
    public static void main(String[] args) 
        throws Exception 
    { 
  
        try { 
  
            ArithmeticException 
                e 
                = new ArithmeticException(); 
            e.addSuppressed(e); 
        } 
  
        catch (Throwable e) { 
            System.out.println("Exception:" + e); 
        } 
    } 
}
輸出:
Exception:java.lang.IllegalArgumentException:
 Self-suppression not permitted

示例4:顯示NullPointerException

// Java program to demonstrate 
// Exception NullPointerException 
// the addSuppressed() Method. 
  
import java.io.*; 
  
class GFG { 
  
    // Main Method 
    public static void main(String[] args) 
        throws Exception 
    { 
  
        try { 
  
            ArithmeticException 
                e 
                = new ArithmeticException(); 
            e.addSuppressed(null); 
        } 
  
        catch (Throwable e) { 
            System.out.println("Exception:" + e); 
        } 
    } 
}
輸出:
Exception:java.lang.NullPointerException:
 Cannot suppress a null exception.

參考文獻:



相關用法


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