kotlin lazy委托异常时执行流程

遇到一个面试题,kotlin lazy委托的lambda表达式如果发生异常没执行完会发生什么?测试下呗,测试代码如下:

Kotlin 复制代码
fun main() {
    println(shiJu2)
    println(shiJu2)
    println("=========================================")
    println(shiJu)
    println(shiJu)
}

val shiJu:String by lazy {
    throw IOException("虎为百兽尊,谁敢触其怒?唯有父子情,一步一回顾‌。") // 未捕获的异常
}

val shiJu2: String by lazy {
    try {
        // 这里可以是可能抛出异常的代码
        throw IOException("虎为百兽尊,谁敢触其怒?唯有父子情,一步一回顾‌。")
    } catch (e: IOException) {
        // 异常时返回默认值
        "半亩方塘一鉴开,天光云影共徘徊。问渠那得清如许?为有源头活水来。"
    }
}

运行:

ok. 如果没有捕获异常会导致初始化失败,抛出异常。 捕获异常给个默认值就可以。

相关推荐
551只玄猫14 小时前
【数学建模 matlab 实验报告13】主成分分析
开发语言·数学建模·matlab·课程设计·主成分分析
zzzzls~14 小时前
Python 工程化: 用 Copier 打造“自我进化“的项目脚手架
开发语言·python·copier
韶博雅14 小时前
emcc24ai
开发语言·数据库·python
yongui4783414 小时前
C# 与三菱PLC通讯解决方案
开发语言·c#
2501_9333295514 小时前
技术架构深度解析:Infoseek舆情监测系统的全链路设计与GEO时代的技术实践
开发语言·人工智能·分布式·架构
Tong Z14 小时前
常见的限流算法和实现原理
java·开发语言
凭君语未可15 小时前
Java 中的实现类是什么
java·开发语言
wearegogog12315 小时前
离散系统参数辨识与广义预测控制MATLAB实现
开发语言·matlab
史迪仔011215 小时前
[QML] QML IMage图像处理
开发语言·前端·javascript·c++·qt