【问题标题】:handling return from function where no return type is expected in some case in java在 java 中的某些情况下处理从函数返回的返回类型
【发布时间】:2015-05-16 06:36:42
【问题描述】:

我写了一段代码:在这段代码中,我们调用validitem函数来检查传递的参数是否是一些有效的项目。如果它是有效的项目,我想返回那个项目,否则我想中止处理说明它不是有效的项目。请为下面的初始代码编写建议解决方案,关于如何处理我们不想返回任何东西的情况。如果我们返回 null,那么如何以及在哪里捕获异常?

public void constructdata(){
    String foo = validitem(param);
    //code to avoid processing if null is returned
}
public validitem(String item){
    if(item.equals("Apple"){
        return item;
    }
    if(item.equals("Ball"){
        return item;}
    return null;
}

【问题讨论】:

  • 如果它的东西 container.putField(key,validitem(param)) 那么如何写你的建议,即我们想做 putfield 只有当它不是 null 否则抛出异常时,请给出正确的代码

标签: java function error-handling return-value


【解决方案1】:

如果您希望validitem() 仍然返回 null,如果是,则抛出异常:

String foo = validitem(param);
if ( foo != null ) {
    container.putField(key, foo);
} else {
    throw new Exception();
}

如果你想让validitem() 只返回一个有效值,否则抛出异常:

public void constructdata(){
    try {
        container.putField(key, validitem(param));
    } catch (Exception e) {
        // Handle exception
    }
}

public validitem(String item) throws Exception {
    if (item.equals("Apple") {
        return item;
    }
    if (item.equals("Ball") {
        return item;
    }
    throw new Exception("Error message");
}

您应该使用比Exception() 更具体的异常。我只是用它来演示逻辑。

【讨论】:

  • 如果它的东西 container.putField(key,validitem(param)) 那么如何写你的建议,即我们想做 putfield 只有当它不是 null 否则抛出异常时,请给出正确的代码
【解决方案2】:

尽可能避免返回 null,因为它可能导致错误,您可以返回 Java8 Optional。如果您不使用 java8,guava 库中有一个等价物。返回一个 Optional 迫使客户端考虑如何处理什么都不返回的情况。

【讨论】:

    猜你喜欢
    • 2015-08-03
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 2019-12-27
    • 2010-12-31
    • 2019-02-16
    相关资源
    最近更新 更多