我写了一个方法,该方法在try语句中返回一些值。在catch内部,我调用handleException,它将具有理解异常并重新抛出新异常的转换逻辑。这里的handleException总是抛出异常,而getXYZ()仍然给出编译时错误,期望返回语句。我不处理异常,我只是抛出新的异常,所以该方法为什么要返回语句。

public String getXYZ(String input) {
    try {
        return getFromDAO(input);
    } catch (Exception e) {
        handleException(e);
    }
}
private void handleException(Exception e) {
    try {
        throw e;
    } catch(SomeException se) {
        throw new MyRuntimeException("MyException message", se);
    } catch(SomeOtherException soe) {
        throw new MyRuntimeException("MyException message", soe);
    }
}


此方法的另一个版本可以编译。

public String getXYZ(String input) {
    try {
        return getFromDAO(input);
    } catch (Exception e) {
        throw e;
    }
}

最佳答案

您没有在catch块中抛出任何内容,而是在调用handle函数,这最终将导致引发新的异常,但是getXYZ中的实际代码正在catch中进行函数调用。如果将handleException更改为以后在某些情况下不引发异常该怎么办,getXYZ会返回什么?

关于java - 为什么即使catch重新抛出异常,方法也需要在catch中要求return语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37747651/

10-12 02:53
查看更多