前言
由于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<String>) {
// 程序编译不会报错,但是因为程序抛出了异常并没有被捕获,所以会导致程序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<String>) {
val num: Int? = null
val rlt = num ?: test()
}
fun test(): Nothing {
throw NullPointerException()
}
网友评论