美文网首页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