有时我看到程序员使用“assert”,有时我看到null检查参数并抛出异常。
什么是最好的选择?
答案 0 :(得分:2)
始终考虑“断言”并非始终启用。这是你应该始终牢记的主要规则。将其视为一种机制来检测代码中的错误,不应发生的意外情况(前/后条件)。另一方面,如果有可能从调用者那里获得null值,则抛出异常(即IllegalArgumentException)。
例如:
答案 1 :(得分:0)
这取决于您的使用情况,
如果您希望参数不是显式,那么您应该断言或抛出IllegalArgusmentException
另一方面,如果它是null
,那么简单检查not null并分配回退值并向前移动代码
答案 2 :(得分:0)
我不知道我在哪里阅读,(也许有人会指出),但一般规则是这样的:
1)for interfaces使用空检查,因为接口必须处理所有参数,包括null,但这并不禁止你额外抛出异常。
2)在异常情况下抛出异常,例如在不应将null作为参数的私有方法中。
3)使用断言但不要太依赖它,因为它可以被禁用,并且不包括在结果字节码中。所以在开发时使用它,但不适用于真实环境。