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

相关推荐
派大鑫wink10 小时前
Java 高级编程技巧(生产级实用,覆盖性能、并发、设计、JVM、语法、避坑)
开发语言·python
JSON_L10 小时前
PHP实现大文件分片上传
开发语言·php
凤山老林10 小时前
JDK 11 升级至 JDK 17
java·开发语言·jdk17·jdk升级·jdk11
指令集梦境10 小时前
图解:单调栈算法模板(Java语言)
java·开发语言·算法
小灰灰搞电子10 小时前
C++ boost::circular_buffer 详解:原理、用法与实战
开发语言·c++·boost
Hanniel10 小时前
Python描述符(下):内置机制揭秘
开发语言·python·机器学习
Cloud_Shy61810 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第七章 Item 52 - 53)
开发语言·人工智能·笔记·python
星恒随风10 小时前
C++ string 类详解:常用接口、OJ 场景与模拟实现中的深浅拷贝
开发语言·c++·笔记·学习·状态模式
yyuuuzz10 小时前
2026游戏云服务器推荐的技术判断思路
运维·服务器·开发语言·网络·人工智能·游戏·php