Kotlin之异常

和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)
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容