1、异常类
Kotlin 中所有异常类继承自 Throwable
类
2、Nothing 类型
Nothing
类型没有值,只用于标记永远不能达到的代码位置 (在代码中,可用 Nothing
来标记一个永远不会返回的函数)
// 使用 Nothing 来标记一个永远不会返回的函数
fun fail(message: String): Nothing {
throw IllegalArgumentException(message)
}
// 当调用该函数时,编译器会知道在该调用后就不再继续执行了
val s = person.name ?: fail("Name required")
println(s) // 在此已知“s”已初始化
Nothing?
是 Nothing的
可空变体,有一个可能的值是 null
// 如果用 null 来初始化一个要推断类型的值,而又没有其他信息可用于确定更具体的类型时,
// 编译器会推断出 Nothing? 类型
val x = null // “x”具有类型 `Nothing?`
val l = listOf(null) // “l”具有类型 `List<Nothing?>
3、Throw
throw
是一个表达式,类型是 Nothing
类型
使用 throw
表达式来抛出异常
fun demo() {
throw Exception("Error here!")
}
4、Try
try
是一个表达式,意味着它可以有一个返回值;返回值是try
块中的最后一个表达式或者是(所有)catch
块中的最后一个表达式(finally
块中的内容不会影响表达式的结果)
val a: Int? = try { input.toInt() } catch (e: NumberFormatException) { null }
使用 try
……catch
表达式来捕获异常
try {
// 一些代码
} catch (e: SomeException) {
// 处理程序
} finally {
// 可选的 finally 块
}