java api design - NULL 或 Exception

2022-09-02 20:40:58

返回空值还是从 API 方法引发异常更好?

返回 null 需要对整个 null 进行丑陋的 null 检查,如果不检查返回值,则会导致严重的质量问题。

抛出异常会强制用户为错误情况编写代码,但是由于Java异常会冒泡并强制调用方代码处理它们,因此通常,使用自定义异常可能是一个坏主意(特别是在java中)。

任何合理和实用的建议?


答案 1

Josh Bloch 建议返回空对象或“单位”对象来代替 null 值。查看 Effective Java 以获取大量有用的 Java 花絮。


答案 2

我认为答案完全取决于应用程序的上下文,以及您认为的“特殊情况”与程序员错误。

例如,如果编写 XML 解析器,则可以选择实现如下方法:

/**
 * Returns first child element with matching element name or else
 * throws an exception.  Will never return null.
 */
Element getMandatoryChildElement(Element parent, String elementName)
throws MissingElementException;

...因为此方法允许您在单个逻辑块中实现消息解析代码,而无需在检索每个元素或属性后检查消息的格式是否正确。


推荐