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

相关推荐
H.莓飛17 分钟前
【Linux】自主 Shell
linux·运维·服务器·c语言·开发语言·visual studio
熊猫钓鱼>_>20 分钟前
Kotlin Multiplatform for OpenHarmony 实战:kotlinx-coroutines 结构化并发适配
开发语言·kotlin·agent·harmonyos·openharmony·适配·华为云码道
沫璃染墨33 分钟前
《Qt从零入门系列(十四):QThread多线程详解——从线程创建到客户端阻塞处理》
开发语言·c++·笔记·qt·ui·交互·线程
hixiong1231 小时前
C# 使用 ZXingCpp.Angle 进行条码、二维码识别
开发语言·c#·扫码
云和数据.ChenGuang1 小时前
AI 工程师相关就业岗位(细分,偏工程落地,由底层到上层)
服务器·开发语言·人工智能·python
爱读书的小胖1 小时前
Codewars:Last digit of a large number(C)解题分析
c语言·开发语言·r语言
码途行者1 小时前
处理超时未支付订单:两套轻量化方案,附 PHP 极简实现
开发语言·redis·php
云和数据.ChenGuang1 小时前
LangChain 实战指南:从入门到构建智能应用
开发语言·人工智能·python·langchain
const_qiu1 小时前
第三章 04:3.6 基础调用链的构建
开发语言·python
向上的车轮1 小时前
Python 大数据处理不慢:Polars + DuckDB + Arrow 实战指南
开发语言·python