You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hyperskill练习:如何将try-catch-finally作为表达式实现输入校验?

解决Kotlin try-catch-finally表达式的异常处理问题

你需要在try块中完成输入格式验证,不符合要求时主动触发异常,同时利用Kotlin中try-catch-finally可作为表达式的特性来赋值给advice变量。修改后的完整代码如下:

fun pepTalk(name: String) : String {
    val array = name.split(" ").toTypedArray()
    val firstName = array[0]
    val secondName = array[1]
    return "Don't lose the towel, traveler $firstName $secondName!"
}
// do not change the function above

fun main() {
    val name = readLine()!!

    val advice: String = try {
        val parts = name.split(" ")
        // 检查是否为空格分隔的两个单词,不符合则抛出异常
        if (parts.size != 2) {
            throw ArrayIndexOutOfBoundsException()
        }
        // 符合条件时返回原输入字符串
        name
    } catch (e: ArrayIndexOutOfBoundsException) {
        "nameless one"
    } finally {
        println("Good luck!")
    }
    println(pepTalk(advice))
}

关键说明:

  • try块中通过split(" ")拆分输入字符串,判断拆分后的元素数量是否为2,若不是则主动抛出ArrayIndexOutOfBoundsException,触发catch块逻辑
  • Kotlin的try是表达式,会返回try块或catch块中最后一行代码的值,因此advice变量会根据输入情况被赋值为原字符串或默认值"nameless one"
  • finally块无论是否发生异常都会执行,负责输出固定提示信息

内容的提问来源于stack exchange,提问作者sievy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 20:48:18