考虑以下代码
public void myMethod1() {
try {
this.getClass().getMethod("myMethod").invoke(this);
} catch (Exception e) {
throw e;
}
}
public void myMethod1_fixed() throws Exception {
try {
this.getClass().getMethod("myMethod").invoke(this);
} catch (Exception e) {
throw e;
}
}
public void myMethod2() {
try {
this.getClass().getMethod("myMethod").invoke(this);
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
} catch (Exception e) {
throw e;
}
}
myMethod1()抱怨没有处理Exception e被抛出的东西,我理解这Exception是因为检查异常并且你被迫处理它,因此myMethod1_fixed()添加throws Exception并且它很高兴。
现在有了myMethod2()它也扔了Exception e,但它虽然没有,但它很高兴throws Exception,意思Exception是不受约束?