如何将自定义消息附加到异常(在 CANT 抛出异常的重写方法中)?

How to append custom message to exception (in overrided methods which CANT throw exception)?

我知道我总是可以在 try/catch 块中捕获异常并像这样抛出 Exception (message, e)

    try {
        //...my code throwing some exception
    } catch (IndexOutOfBoundsException e) {
        throw new Exception("Error details: bla bla", e);
    }

简单。但它在覆盖方法中不起作用,因为它们不能抛出任何异常,而超级方法不会抛出。

那么,我现在有什么选择?

您始终可以选择 未检查 例外,即 RuntimeException class 的子 class。这些异常以及 Error 的子 class 免于编译时检查。

此处 Parent 正在定义没有 throws 子句的 throwException() 方法并且 Child class 覆盖它但抛出一个新的 RuntimeException 来自 catch 块。

class Parent{
    public void throwException(){
        System.out.println("Didn't throw");
    }
}
class Child extends Parent{
    @Override
    public void throwException(){
        try{
            throw new ArithmeticException("Some arithmetic fail");
        }catch(ArithmeticException ae){
            throw new RuntimeException(ae.getMessage(), ae);
        }
    }
}