Kotlin - 异常 Exception

本文详细介绍了Kotlin中的异常处理机制,包括自定义异常、抛出异常、捕获异常的方法,并提供了使用try-catch-finally及runCatching()函数的示例。此外,还探讨了如何设置全局默认异常处理方案。

一、异常处理

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()
    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值