如何将自定义消息附加到异常(在 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);
}
}
}
我知道我总是可以在 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);
}
}
}