Как достать подавленное исключение java

Аватар пользователя Сергей Якимович
Сергей Якимович
06 февраля 2023

Достать подавленное исключение можно с помощью метода getSuppressed(), который возвращает массив подавленных исключений.

import java.io.IOException;

public class App {

    public static void main(String[ ] args) {
        try {
            func();
        } catch (Exception e) {
            System.out.println(e); // => java.io.IOException
            Throwable[] suppressedExceptions = e.getSuppressed();
            for (Throwable t : suppressedExceptions) {
                System.out.println(t); // => java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 2
            }
        }
    }

    // метод вызывает ArrayIndexOutOfBoundsException, а затем подавляет ее, выбрасывая IOException
    public static void func() throws Exception {
        Exception supressedExсeption = null;
        try {
            int[] arr = {1,2};
            int n = arr[3];
        } catch (Exception exception) {
            supressedExсeption = exception;
            throw exception;
        } finally {
            Exception newExсeption = new IOException();
            if(supressedExсeption != null) {
                newExсeption.addSuppressed(supressedExсeption);
            }
            throw newExсeption;
        }
    }
}
1 0

Похожие вопросы