我从多个渠道读到的是,我们应该避免使用 assert
异常,因为如果在生产中出现 -ea
标志没有在JVM上启用。
然而,据我所知,这一点并不适用。check
和 require
即无论JVM标志或任何相关设置如何,它们总是会抛出一个异常。
我只是想再三确认一下使用 check
和 require
在投入生产前在这里询问。
require
和 check
是绝对可以使用的生产代码,它扔一个 IllegalArgumentException
逢凶化吉 -ea
.
此外,这样做可以被认为是一个很好的实践,因为它使输入检查一致,更可读,并允许智能铸造为非空类型(通过kotlin合同)。