假设我有一个方法或构造函数在内部使用另一个方法或构造函数,声明可以抛出RuntimeException。
// Example:
public MyClass(Object arg) {
setVar(arg);
// Not responsible for dealing with the exception
}
public void setVar(Object arg) throws MyRuntimeException {
if(!isValidArg(arg))
throw new MyRuntimeException("Got you, evil argument!");
// Do something
}
在这种情况下,如果例如未满足必要的前提条件,则抛出RuntimeException。
问:包装方法/构造函数是否应该声明相同的Exception,如果它的参数可能导致抛出异常?
答案 0 :(得分:3)
这实际上取决于代码所在的上下文。如果你想创建一个自包含的东西,比如一个库,你可能想要在类中捕获Exception,只是为了使用你的代码更清洁
但是,如果你将代码作为项目的一部分,那么我会像你说的那样“承担抛出异常”,直到它在语义上没有意义。
答案 1 :(得分:1)
如果它不应该在包装方法中处理,我会声明它 - 与检查例外相同。
无论如何,即使对于未经检查的异常,也可以获得方法的提示。客户将决定是否需要处理。
答案 2 :(得分:0)
RuntimeExceptions
而不需要将它包含在两个方法的throws签名中。
您应该阅读有关运行时异常的this
答案 3 :(得分:0)
不,不检查运行时异常,即编译器不会强制您处理它们。但作为一个好的编程实践,你可以处理像
这样的异常public MyClass(Object arg) {
try{
setVar(arg);
}
catch(MyRuntimeException exp){
// code if exception arises
}