我被分配了一个项目,需要开发一组类来作为存储系统的接口。其中一个要求是该类支持以下签名的get方法:
public CustomObject get(String key, Date ifModifiedSince)
基本上,该方法应该仅在对象在“ifModifiedSince”之后被修改时才返回与“key”相关联的CustomObject。如果存储系统不包含“key”,则该方法应返回null。
我的问题是:
当键存在但对象未被修改时,我该如何处理?
这很重要,因为使用此类的一些应用程序将是Web服务和Web应用程序。这些应用程序需要知道是否返回404(未找到),304(未修改)或200(好的,这是数据)。
我正在权衡的解决方案是:
1.当存储系统不包含“key”时,抛出自定义异常
2.当“ifModifiedSince”失败时,抛出自定义异常。
3.向CustomObject添加状态属性。要求调用者检查属性。
我不喜欢这三个选项中的任何一个。我不喜欢选项1和2,因为我不喜欢使用异常进行流程控制。我也不喜欢返回值,因为我的意图是指示没有值。
尽管如此,我还是倾向于选项3。
有我没有考虑的选项吗?有人对这三个选项有强烈的感觉吗?
结论:
阅读所有答案后,我得出的结论是在这种情况下使用包装器是最好的方法。本质上,我将模仿HTTP,使用包括响应代码和内容正文(消息)的元数据(标头)。