如何使用try-catch-finally语句修复Kotlin中pepTalk函数的调用?
修复Kotlin函数调用的异常处理逻辑
需求回顾
- 函数
pepTalk接收由空格分隔的两个单词组成的姓名,返回包含姓名的临行建议字符串;若姓名格式不正确(比如不足两个单词),会抛出数组越界异常 - 需要将
main函数中的函数调用包裹在try-catch-finally块中,实现:- 正常执行时,
advice等于pepTalk的返回结果 - 发生异常时,
advice赋值为"Don't lose the towel, nameless one." - 无论是否发生异常,
finally块都要打印"Good luck!"
- 正常执行时,
修复后的代码
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 { advice = pepTalk(name) } catch (e: Exception) { advice = "Don't lose the towel, nameless one." } finally { println("Good luck!") } print(advice) }
代码说明
- try块:执行
pepTalk函数调用,若姓名格式正确(包含两个空格分隔的单词),则将返回值赋值给advice - catch块:捕获
pepTalk执行过程中可能抛出的异常(比如数组越界ArrayIndexOutOfBoundsException),此时将指定的默认字符串赋值给advice - finally块:无论
try块是否成功执行、是否触发异常,都会执行该块中的代码,打印"Good luck!" - 变量声明:将
advice的声明移到try-catch外部,保证在print(advice)时变量已被正确初始化
内容的提问来源于stack exchange,提问作者Artem Riabchikov
相关产品推荐
相关产品推荐

