我已经创建了样本类来测试Kotlin中的断言
class Assertion {
fun sum(a: Int, b: Int): Int {
assert(a > 0 && b > 0)
return a + b
}
}
fun main(args: Array<String>) {
Assertion().sum(-1, 2)
}
Run Code Online (Sandbox Code Playgroud)
并使用以下选项,但该程序不会抛出断言异常.
-ea:AssertionKt,-ea:Assertion和-ea:...
要在Kotlin中启用断言,请使用该-ea选项运行JVM ,而不使用任何其他说明符.
在 中Kotlin,与 不同的是Java,断言只能在顶层启用/禁用,即通过指定-eaJVM 选项。
在 Kotlin 中,幕后assert()是一个在文件中定义的函数AssertionsJVM.kt。ENABLED对象中的变量_Assertions用于确定是否启用断言。
@PublishedApi
internal object _Assertions {
@JvmField @PublishedApi
internal val ENABLED: Boolean = javaClass.desiredAssertionStatus()
}
Run Code Online (Sandbox Code Playgroud)
如果为该类启用了断言,则ENABLED将该变量分配给该变量。true_Assertions
因此,要在 Kotlin 中打开断言,必须在 JVM 中启用它们
-ea-ea:kotlin._Assertions| 归档时间: |
|
| 查看次数: |
1452 次 |
| 最近记录: |