对于永不运行的返回语句,标准做法是什么?

时间:2019-02-08 16:07:11

标签: java

在过去的几个月中,我几次遇到以下情况。

假设您有一些具有几种不同结果的逻辑,所有这些逻辑都返回值。在这种逻辑中,没有没有无法处理的情况最终回报声明怎么办?

下面是一个粗略的示例,但我只是想找出返回堆栈的最佳值/对象是什么?这是什么标准做法?

    for (int i = 10; i > 0; i--) {
        if (i ==5) {
            return String.valueOf(i);
        }
        if (i == 6) {
            return String.valueOf(i);
        }
    }

    return "this will never get returned";

3 个答案:

答案 0 :(得分:2)

引发新的异常,说明存在无法处理的意外行为。

for (int i = 10; i > 0; i--) {
    if (i ==5) {
        return String.valueOf(i);
    }
    if (i == 6) {
        return String.valueOf(i);
    }
}

throw new RuntimeException("Unexpected error occured");

答案 1 :(得分:1)

一种防御编程方法是仅在方法/函数的末尾返回值。

String myFunction() {
    String returnValue = null;    
    for (int i = 10; i > 0; i--) {
        if (i == 5) {
            returnValue = String.valueOf(i);
            break;
        }
        if (i == 6) {
            returnValue = String.valueOf(i);
            break;
        }
    }

    // Validate return value when necessary
    // if (returnValue == null) {
    //    throw new AssertionError("Return value not set!");
    // }

    return returnValue;
}

答案 2 :(得分:0)

您可以返回Optional。

Optional<String> getIfExists() { 
   ...   
   return Optional.empty(); 
}