java api design - NULL 或 Exception
返回空值还是从 API 方法引发异常更好?
返回 null 需要对整个 null 进行丑陋的 null 检查,如果不检查返回值,则会导致严重的质量问题。
抛出异常会强制用户为错误情况编写代码,但是由于Java异常会冒泡并强制调用方代码处理它们,因此通常,使用自定义异常可能是一个坏主意(特别是在java中)。
任何合理和实用的建议?
返回空值还是从 API 方法引发异常更好?
返回 null 需要对整个 null 进行丑陋的 null 检查,如果不检查返回值,则会导致严重的质量问题。
抛出异常会强制用户为错误情况编写代码,但是由于Java异常会冒泡并强制调用方代码处理它们,因此通常,使用自定义异常可能是一个坏主意(特别是在java中)。
任何合理和实用的建议?
我认为答案完全取决于应用程序的上下文,以及您认为的“特殊情况”与程序员错误。
例如,如果编写 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;
...因为此方法允许您在单个逻辑块中实现消息解析代码,而无需在检索每个元素或属性后检查消息的格式是否正确。