一、异常处理
1.1 自定义异常
class MyException() : Exception() //自定义异常
1.2 抛出异常
fun check(num: Int?) {
num ?: throw MyException() //抛异常
checkNotNull(num) {"值为空"} //使用先决条件函数
}
1.3 捕获异常
1.3.1 try-catch-finally
try {
//业务代码...
} catch(e: Exception) {
//异常处理...
} finally {
//关闭资源...
}
1.3.2 runCatching( )
强烈建议使用 Kotlin 函数式风格或者链式风格编程。runCatching( ) 会返回一个 Result 对象,通过调用它的 onSuccess() 来处理成功,onFailure() 来处理失败。详见:Result
| public inline fun <R> runCatching(block: () -> R): Result<R> { return try { Result.success(block()) } catch (e: Throwable) { Result.failure(e) } } |
runCatching {
//业务代码
}.onSuccess { value ->
//成功时...
}.onFailure { throwable ->
//失败时,异常处理...
}
1.4 全局默认异常处理
配置一个默认的方案来处理那些未捕获的异常。在APP崩溃时能记录错误(尤其是不好复现的bug)或崩溃前呈现用户友好消息。
private fun defaultUnCaughtExceptionHandler(){
Thread.setDefaultUncaughtExceptionHandler { thread, exception ->
Log.e("未捕获异常","${exception.message}")
Toast.makeText(this, "Oops!",Toast.LENGTH_LONG).show()
exception.printStackTrace()
}
}
本文详细介绍了Kotlin中的异常处理机制,包括自定义异常、抛出异常、捕获异常的方法,并提供了使用try-catch-finally及runCatching()函数的示例。此外,还探讨了如何设置全局默认异常处理方案。
2395

被折叠的 条评论
为什么被折叠?



