Классы исключений должны расширять класс Throwable (Exception extends Throwable). То, что вы пытаетесь достичь, невозможно в Java.
То, что вы все еще можете сделать, это что-то вроде:
class CustomException extends Exception {
private Throwable cause;
//...
}
Это фактически сделано в стандартном Java для хранения исключение, которое было root этого исключения. И обычно вы бы сделали:
try {
// ...
} catch(AnotherException e) {
//...
throw new CustomException(e);
}
Почему это так спроектировано?
Ну, есть набор стандартных функций, которые все исключения должны иметь в java, вы можете увидеть в Throwable:
- укажите причину
- предоставьте сообщение об ошибке
- трассировку стека в коде, где возникло исключение.
It можно было бы сделать через интерфейсы, это правда, но JRE использует класс.