【发布时间】:2014-09-07 04:07:29
【问题描述】:
不幸的是,我继承了一个解析 JSON 的 Java 库。现在,如果你请求一个 JSON 数组中不存在的键,它会以一个空指针而死。我将编辑库以做一些更合理的事情。我想我有两个选择:
1) 返回 null 以便调用者可以检查
2) 抛出一个更明确的异常(比“Null Pointer”更具描述性),强制调用者处理他们要求不存在密钥的情况。
我来自 python 背景,非常喜欢数字 2,因为它会确保某些傻瓜无法调用此函数,然后继续使用空值,稍后会导致其应用程序崩溃并可能损坏数据。您认为哪种方式更符合 Java 的最佳实践?这不是同一主题的其他与语言无关的问题的重复。这特别是在 Java 的上下文中!!!!
【问题讨论】:
-
2 号是您最好的选择。你不希望人们四处寻找永远寻找错误......
-
这是在特定于 Java 的上下文中
-
真的很难回答。如果你是一个纯粹主义者,当它不是异常状态时,你不应该抛出异常。如果某些东西不存在是完全可以的(并且你最终得到一个空引用),那么你不应该抛出异常。
-
@ErlVolton,是的,但这个问题与语言无关......更多的是设计哲学问题......
-
从 Java 8 开始,您还可以返回一个
Optional,如果密钥不存在,则该Optional为空。
标签: java json error-handling nullpointerexception