Класс Exception легко расширить, чтобы добиться этого:
public class OperationFailedException extends Exception{
public Exception cause;
public OperationFailedException(String string, Exception ex) {
super(string);
cause=ex;
}
public void printStackTrace(){
super.printStackTrace();
System.err.println("\nCaused by:\n");
cause.printStackTrace();
}
}
Это исключение полезно для сокрытия базовых исключений, например, когда мы хотим избежать зависимостей или когда мы хотим избежать принуждения вызывающей стороны работать со слишком многими типами исключений. Я обычно также создаю версию этого класса, расширяющую RuntimeException
для исключения исключения, которое я хочу отключить