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.
相關用法
- Java Throwable toString()用法及代碼示例
- Java Throwable initCause()用法及代碼示例
- Java Throwable getStackTrace()用法及代碼示例
- Java Throwable getSuppressed()用法及代碼示例
- Java Throwable getCause()用法及代碼示例
- Java Throwable setStackTrace()用法及代碼示例
- Java Throwable getMessage()用法及代碼示例
- Java Throwable printStackTrace()用法及代碼示例
- Java Throwable getLocalizedMessage()用法及代碼示例
- Java Throwable fillInStackTrace()用法及代碼示例
- Java Java lang.Long.numberOfLeadingZeros()用法及代碼示例
- Java Java lang.Long.highestOneBit()用法及代碼示例
- Java Java.util.Collections.rotate()用法及代碼示例
- Java Java lang.Long.byteValue()用法及代碼示例
注:本文由純淨天空篩選整理自AmanSingh2210大神的英文原創作品 Throwable addSuppressed() method in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。