Kotlin之异常

2019-01-03  本文已影响4人  满天星爱我

和java中的异常一样,唯一不同的是kotlin的 throw结构是一个表达式,能作为另一个表达式中的一部分使用

val percentage = if(number in 0..100) number else throw IllegalArgumentException("A percentage must be between 0 and 100: $number")

"try" "catch" 和 "final"

Kotlin不区分受检异常和未受检异常,不需要指定函数抛出异常

fun readNumber(reader:BufferedReader): Int? {
    try {
        val line = reader.readLine();
        return line.toInt()
    }catch (e:NumberFormatException){
        return null
    }finally {
        reader.close()
    }
}

"try"作为表达式,表达式中最后一句作为返回值

如果发生异常执行catch中的语句,那么catch中最后一句作为返回值,如果将return放到catch代码块中,如果发生异常,代码将不会继续往下执行,想继续往下执行,catch也需要一个值,例如将return改成 null,那么它就会是子居中最后一个表达式的值

fun readNumber(reader: BufferedReader){
    val number = try {
            reader.readLine().toInt()
        }catch(e:NumberFormatException){
            return
        }finally {
            reader.close()
        }
    println(number)
}
上一篇下一篇

猜你喜欢

热点阅读