Kotlin编码窍门之异常(Exceptions)

异常类(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互操作性章节...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,549评论 9 118
  • Kotlin系统化学习-20170823文章中有大部分内容是借鉴《Kotlin实战》中文版,特此注明一下。 Kot...
    ChenHaHa哈哈阅读 5,737评论 2 10
  • 这章将讲述声明函数、变量、类、枚举和属性Kotlin的控制结构智能强转抛和处理异常 1 基本元素: 函数和变量 K...
    tigershin阅读 5,225评论 1 1
  • 文/生活美学智慧 凯利•麦格尼格尔是一位健康心理学博士,致力于帮助人们做出积极的改变。本书吸收了最新的经济学、心理...
    美遇生活美学阅读 3,379评论 0 1
  • 像飞蛾一样活着, 每一天, 变成光, 慢慢死去, 经验着生活, 意识被挤压, 燃烧的回忆, 挣扎着, 脱去外衣, ...
    c93阅读 1,364评论 0 0

友情链接更多精彩内容