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. 如果没有捕获异常会导致初始化失败,抛出异常。 捕获异常给个默认值就可以。

相关推荐
90后小陈老师44 分钟前
PHP 配置默认值失效排查实录:isset 兜底遇上表单空串回填,首页文案是怎么集体消失的
开发语言·php
JJJennie7772 小时前
Gemini 3.7 Flash 上线,Google 想让 AI 多干活
开发语言·javascript·ecmascript
wuyk5552 小时前
Python 第三章:列表 List
服务器·开发语言·python
Evand J3 小时前
【MATLAB例程,车联网7】CACC网联车辆协同控制:ACC对比、V2X时延丢包与队列稳定性,附例程下载链接
开发语言·matlab·车联网
用户45989204565163 小时前
一套 KMP 多仓库版本治理工作流:用 Version Catalog + CI 把发版流水线自动化
前端·kotlin
要努力点3 小时前
Python入门第六课
开发语言·python
萧瑟余晖4 小时前
Java深入解析篇三十三之消息队列
java·开发语言
IT爱学堂4 小时前
尚硅谷Java+AI大模型应用开发革新版本 2025年3月
java·开发语言·人工智能
C++ 老炮儿的技术栈4 小时前
Qt5.9.1 Windows 完整开发环境搭建流程
开发语言·c++·windows·qt·编辑器·代码化
xcLeigh4 小时前
Go入门:无类型常量与类型常量的区别
服务器·开发语言·golang