Kotlin学习笔记 - 异常

前言

由于Kotlin的异常处理机制的语法和Java基本一样,所以这里只记录Kotlin和Java的不同点

Kotlin 与 Java 的异常处理机制的不同点

1、try语句是表达式

val str = "abc123"
/*
 * try表达式的返回值是try或catch代码块中的最后一个表达式的值
 * finally代码块不会影响表达式的结果
 */
val result = try {
    Integer.parseInt(str)
} catch (e: Exception) {
    null
}
println("result = $result") // 输出结果:result = null

2、Kotlin没有checked异常

fun main(args: Array) {
    // 程序编译不会报错,但是因为程序抛出了异常并没有被捕获,所以会导致程序crash
    println("start")
    throwException()
    throwRuntimeException()
    println("end")
}

fun throwException() {
    println("throw checked Exception")
    throw Exception("checked exception")
}

fun throwRuntimeException() {
    println("throw runtime Exception")
    throw RuntimeException("runtime exception")
}

3、throw语句是表达式

throw表达式的类型是 Nothing,Nothing 类型没有值,而是用于标记永远无法真正返回的表达式

  • 示例1:
val num: Int? = null
val rlt = num ?: throw NullPointerException()
  • 示例2:
fun main(args: Array) {
    val num: Int? = null
    val rlt = num ?: test()
}

fun test(): Nothing {
    throw NullPointerException()
}

你可能感兴趣的:(Kotlin学习笔记 - 异常)