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
相关产品推荐
相关产品推荐

