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