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

相关推荐
会飞的拖把11 分钟前
Python 面向对象编程详解:从类与对象到动态属性方法
开发语言·python
大牧师42 分钟前
Nest.js 微服务入门教程
开发语言·javascript·后端·微服务·node.js·nest.js·nest
格林威1 小时前
C# 图像异步落盘存储:基于Channel 配合 ArrayPool 实现异步落盘
开发语言·人工智能·数码相机·机器学习·计算机视觉·c#·视觉检测
软件黑马王子1 小时前
11.缓存池优化:窗口布局
开发语言·前端框架·c#
深圳市益普科技有限公司1 小时前
半导体MES的数字孪生:虚拟调试如何把上线风险提前清零
java·开发语言
低代码布道师1 小时前
外包项目管理平台全栈实战课02搭建数据底座:Next.js + PostgreSQL + Prisma 7
开发语言·javascript·postgresql·全栈开发
格林威1 小时前
C# 图像使用AVX2指令集:使用OpenCvSharp实现字节图像解压缩速度和map_image算子速度提升
开发语言·图像处理·人工智能·计算机视觉·c#·视觉检测·工业相机
(Charon)1 小时前
【C++】网络缓冲区设计(四):epoll + Reactor中Buffer的完整读写流程
开发语言·c++
Kapaseker1 小时前
适配小米“中”折屏,非得买一台吗
android·kotlin