美文网首页
Kotlin编码窍门之异常(Exceptions)

Kotlin编码窍门之异常(Exceptions)

作者: 已迁至知乎_此不再维护 | 来源:发表于2017-06-08 12:05 被阅读0次

    异常类(Exception Classes)

    Kotlin中所有的异常类都是Throwable的子类。每个异常都有消息、堆栈回溯信息和可选的原因。

    要抛出一个异常对象,使用throw表达式:

    throw MyException("Hi There!")
    

    为了捕获一个异常,使用try表达式:

    try {
        // some code
    }
    catch (e: SomeException) {
        // handler
    }
    finally {
        // optional finally block
    }
    

    可以有0到多个catch块,finally块可以省略。但是catch块和finally块至少应该存在一个。

    try是一个表达式(Try is an expression)

    try是一个表达式,也就是说,它可以有一个返回值:

    val a: Int? = try { parseInt(input) } catch (e: NumberFormatException) { null }
    

    try表达式的返回值要么是try块的最后一个表达式,也哦么是catch块的最后一个表达式。finally块对try表达式的结果没有影响。

    检查异常(Checked Exceptions)

    Kotlin没有检查异常(编译时异常)。原因有很多,我们仅提供一个简单的例子。例子省略...

    Nothing类型(The Nothing type)

    在Kotlin中,throw是一个表达式,因此可以将其作为Elvis表达式的一部分:

    val s = person.name ?: throw IllegalArgumentException("Name required")
    

    throw表达式的类型是Nothing。该类型没有值,仅用于标记该代码位置永远不可能到达。在你的代码中,你可以使用Nothing来标记一个永远不会返回的函数:

    fun fail(message: String): Nothing {
        throw IllegalArgumentException(message)
    }
    

    当你调用该函数的时候,编译器将知道执行不会超出调用:

    val s = person.name ?: fail("Name required")
    println(s)     // 's' is known to be initialized at this point
    

    Java互操作性

    参见Java互操作性章节...

    相关文章

      网友评论

          本文标题:Kotlin编码窍门之异常(Exceptions)

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