Java:如何覆盖方法并抛出异常?

use*_*231 1 java overriding exception

我试图覆盖一个方法,抛出异常:

class A {

    public doSomething(){
        // some of logic
    }

}


class B extends A {

    public doSomething() throws MyCustomizedException {
        try {
             // some of logic
        } catch(ExceptionX ex ) {
             throw new MyCustomizedException(" Some info ", ex);
        }
    }      
}
Run Code Online (Sandbox Code Playgroud)

但我得到这个编译时错误:

Exception MyCustomizedException is not compatible with throws clause in A
Run Code Online (Sandbox Code Playgroud)

这两个限制是:

  • 使用相同的函数名称和相同的参数(如果存在):doSomething()
  • 抛出我的自定义异常

我该怎样摆脱异常?

非常感谢.

duf*_*ymo 5

无法做到.

覆盖方法时,不能破坏原始合同并决定抛出已检查的异常.

你可以MyCustomizedException取消选中.您可以抛出它,但不能要求用户以检查异常的方式处理它.您可以做的最好的事情是将其添加到javadoc并解释.

  • 这不是*重载. (2认同)