gpt4 book ai didi

java - 当返回值不是 boolean 值时判断方法成功

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:47:08 27 4
gpt4 key购买 nike

在编程时,我尝试将我的代码模块化为尽可能小和集中的方法,有时这会成为一个问题,因为如果我在某个 I/O 循环中并且某些方法无法获取请求的数据,那么我不能只是如果我有一个大方法,就可以像我一样轻松地控制返回值的流。

大多数方法通过返回一个指示成功的 boolean 值来解决这个问题,但我的问题是,对于返回重要对象的方法的成功/失败,最佳实践是什么?

考虑以下 java 代码:

public JSONObject toJSONObjectForServer() { 
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put(KEY_TASKTYPE, _taskType);
jsonObject.put(KEY_TIMESTAMP, _timestamp);
jsonObject.put(KEY_TASKSCORE, _taskScore);
jsonObject.put(KEY_UNITSCONSUMED, _unitsConsumed);
} catch (JSONException e) {
e.printStackTrace();
}
return jsonObject;
}

如果由于某种原因失败,将返回一个空的 JSONObject。将错误检测推迟到调用方法,使我不得不编写丑陋的东西,例如:

JSONObject result = x.toJSONObjectForServer();
if (result.has(KEY_TASKTYPE))
// method success
else // method failure

以这种方式处理结果并不是不言自明的。我可以为每个返回类型定义一个新类:

public class JSONObjectForServerResult { 
private JSONObject _object;
private boolean _result;

public JSONObject getObject { return _object; }
public boolean getResult { return _result; }

// ctor
}

然后让调用者像这样:

    // some method
JSONObjectForServerResult forServerResult = x.toJSONObjectForServer();
if (forServerResult.getResult())
// method success
else // method failure

但这看起来很复杂,需要做很多工作。

在以这种方式控制流程/错误处理时,我是否遗漏了什么?

谢谢!

最佳答案

我不明白你为什么首先要捕获异常。能不能不抛出JSONException,让调用者处理错误?

关于java - 当返回值不是 boolean 值时判断方法成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23153413/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com