Как достать подавленное исключение 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