К сожалению, у Kotlin нет ключевого слова assert
со специальной семантикой.Вместо этого он имеет следующую функцию:
inline fun assert(value: Boolean, lazyMessage: () -> Any)
Вы можете видеть, что выражение, переданное в качестве первого аргумента, вычисляется безоговорочно.Это означает, что вы не можете добиться такой же легкой проверки, как в Java;вы должны вызвать фактическую ошибку подтверждения, чтобы убедиться.
Так что вам нужна проверка, предложенная @Zoe
:
try {
assert(false)
throw IllegalStateException("Please enable assertions!")
} catch (e: AssertionError) {
// Things are looking good; carry on
}
Если вы настаиваете на броске AssertionError
вместоIllegalStateException
, вы можете использовать для этого логическую переменную.
var assertionsAreDisabled = false
try {
assert(false)
assertionsAreDisabled = true
} catch (e: AssertionError) {
// Things are looking good; carry on
}
if (assertionsAreDisabled) {
throw AssertionError("Please enable assertions!")
}