美文网首页Kotlin开发指南Kotlin专题Kotlin
18. 异常捕获 try...catch...finally

18. 异常捕获 try...catch...finally

作者: 厚土火焱 | 来源:发表于2017-11-15 11:56 被阅读87次

kotlin的异常捕获与其他语言区别不大。请看代码

fun main(args: Array<String>) {
    try {
        val arg1 = args[0].toInt()
        val arg2 = args[1].toInt()
        println("$arg1 + $arg2 = ${sum(arg1, arg2)}")
    } catch (e: NumberFormatException) {
        println("您确定输入的都是整数吗?")
    } catch (e: IndexOutOfBoundsException) {
        println("您确定输入的是 2 个整数吗?")
    } catch (e: Exception) {
        println("发生了意料之外的输入错误。")
    } finally {
        println("谢谢您使用我们的加法计算器。")
    }
}

当系统运行时,需要先给入 2 个整数以便进行 sum 加法运算。
如果给的参数有不是整数的,就会触发 NumberFormatException , 从而打印出 “您确定输入的都是整数吗?”的语句。
如果给出的参数小于 2 个,就会触发 IndexOutOfBoundsException , 那么程序会打印出“您确定输入的是 2 个整数吗?”
如果是其他异常错误,不再细分,直接触发 Exception ,打印出“发生了意料之外的输入错误。”
而 finally 的作用是,无论是否发生错误,都会执行所对应的语句,这里是打印出“谢谢您使用我们的加法计算器。”

6 + 3 = 9
谢谢您使用我们的加法计算器。
您确定输入的都是整数吗?
谢谢您使用我们的加法计算器。

这是异常捕获语句。我们也有异常捕获表达式的写法。
再看一个例子

    val result =try {
        args[0].toInt()/args[1].toInt()
    } catch (e: Exception) {
        0
    }
    println("计算结果:$result")

这里,如果参数计算正常,会把除法结果赋值给 result ,如果发生异常,会把 0 赋值给 result 。最后打印一句“计算结果:__”。这里的 try...catch 就是异常表达式。

计算结果:0

相关文章

网友评论

    本文标题:18. 异常捕获 try...catch...finally

    本文链接:https://www.haomeiwen.com/subject/nfycvxtx.html