10:kotlin 异常(Exceptions )

所有的异常类都继承自Throwable

抛出异常使用throw表达式

throw Exception("wrong")

捕获一个异常使用 try...catch表达式

try {
    // 编码
} catch (e: SomeException) {
    // 异常时处理方法
} finally {
    // 不论异常还是正常结束都要执行当前内容
}

可以有零个或多个catch块,finally可以省略。然而,至少需要一个catchfinally

try是一个表达式

意味着try可以有返回值

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

返回值要么是try中的最后一个表达式,要么是catch中的最后一个表达式。finally中的内容不影响表达式的结果

异常检查

编译期异常是检查异常

Appendable append(CharSequence csq) throws IOException;

kotlin没有检查异常,原因是多方面的,主要是因为写代码时显得臃肿,降低写代码效率

如果想使用解码异常给java或者其他代码使用,可以使用@Throws()注解

Nothing 类型(The Nothing type)

throw是一个表达式,所以你可以将它作为Elvis表达式的一部分来使用:

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

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

fun main() {
    val a : Any? = null
    val s = a ?: fail("Name required")
    println(s)
}

fun fail(message: String): Nothing {
    throw IllegalArgumentException(message)
}
// 报错 - Exception in thread "main" java.lang.IllegalArgumentException: Name required

在类型推断时,初始化值为null,则会被推断为Nothing?类型

val x = null           // 'x' 的类型是 `Nothing?`
val l = listOf(null)   // 'l' 的类型是 `List<Nothing?>`
  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值