使用空参数检查,断言或异常更好的是什么?

时间:2012-05-16 07:51:00

标签: java null

有时我看到程序员使用“assert”,有时我看到null检查参数并抛出异常。

什么是最好的选择?

3 个答案:

答案 0 :(得分:2)

始终考虑“断言”并非始终启用。这是你应该始终牢记的主要规则。将其视为一种机制来检测代码中的错误,不应发生的意外情况(前/后条件)。另一方面,如果有可能从调用者那里获得null值,则抛出异常(即IllegalArgumentException)。

例如:

  • 如果要为第三方创建库,则无法使用assert验证参数。
  • 在私有方法中,您可以使用assert来包含必须满足的前/后条件。

答案 1 :(得分:0)

这取决于您的使用情况,

如果您希望参数不是显式,那么您应该断言或抛出IllegalArgusmentException

另一方面,如果它是null,那么简单检查not null并分配回退值并向前移动代码

答案 2 :(得分:0)

我不知道我在哪里阅读,(也许有人会指出),但一般规则是这样的:

1)for interfaces使用空检查,因为接口必须处理所有参数,包括null,但这并不禁止你额外抛出异常。

2)在异常情况下抛出异常,例如在不应将null作为参数的私有方法中。

3)使用断言但不要太依赖它,因为它可以被禁用,并且不包括在结果字节码中。所以在开发时使用它,但不适用于真实环境。