1. 普通处理异常

这种是普通的写法,明了的处理异常
Kotlin也支持多个catch捕获

1
2
3
4
5
6
7
8
9
10
11

try {
throw Throwable("Diy Exception")
}
catch (e: Exception) {
print("Exception-> ${e.message}")
}
finally {
print("finally")
}

2. inline模式处理异常

封装处理不会导致程序异常终止, 易于使用, 提供代码质量和开发效率
吐槽一点 kotlin 不支持异常检查很不好, 需要人去识别可能出现的各种异常, 在对接各类功能接口很容易被忽略异常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
fun main() {
var p = Person()
p.name = null
nameCatch(action = {
val n: String = p.name ?: fail("name is null")
}, exceptionFinally = {
print("exceptionFinally")
})
print("================")
print(5)
print("================")
}


inline fun nameCatch(action: () -> Unit, exceptionFinally: () -> Unit) {
try {
action()
} catch (e: Exception) {
print("inline try catch -> ${e.message}")
} finally {
exceptionFinally()
}
}