Swift的fatalError()在Kotlin中的等效实现及when分支应用方法
Kotlin中对应Swift
fatalError()的等效方法及示例实现 嘿,刚好对这个点挺熟悉的,来给你唠唠:
1. 直接对应Swift fatalError()的Kotlin方法
Swift里的fatalError()用来直接触发程序崩溃并输出错误信息,在Kotlin里最接近的等效方法是**error()函数**。它会抛出一个IllegalStateException,直接终止程序运行,同时可以传入自定义的错误提示,用法和fatalError()几乎一致。
比如:
error("This code path should never be reached!")
另外,如果你想更明确地指定异常类型,也可以直接抛出特定的运行时异常,比如:
throw IllegalArgumentException("Invalid input received")
不过error()是最便捷的“一键崩溃”方式,和fatalError()的使用场景完全匹配。
2. 你的when表达式示例实现
针对你给出的代码,只需要在else分支里调用error()就能达到和Swift里fatalError()一样的效果,完整代码如下:
val foo = when(bar) { "one" -> true "two" -> false else -> error("Unexpected value for bar: $bar") }
这样当bar不是"one"或"two"时,程序会立刻崩溃,并输出你指定的错误信息,完全符合你的需求。
虽然确实像你说的,这类场景通常有更优雅的解决方案(比如用枚举替代字符串、用密封类约束输入范围,或者返回Boolean?表示未知情况),但如果就是需要快速触发崩溃来标记“不该走到这里”的代码路径,上面的方式就是最直接的。
内容的提问来源于stack exchange,提问作者Maciej Trybiło
相关产品推荐
相关产品推荐

