null安全与异常

一、null安全

  • Kotlin把运行时间可能会出现的null问题,以编译时错误的方式,提前在编译期,而不是等到运行时报错,防患于未然,提高了程序的健壮性。
  • 可空性
    在Kotlin中,除非另有规定,变量不可为null值,即默认变量不为空,不能给非空类型变量赋null值
    在这里插入图片描述
  • Kotlin不允许在可空类型值上调用函数,除非你主动接受安全管理
    在这里插入图片描述

安全调用操作符

安全调用允许可空类型上调用函数,编译器看到有安全调用安全符,如果遇到null值,就跳过函数调用,而不是返回null
在这里插入图片描述

使用带let的安全调用

当输入不为空时,调用let函数

    var letter = readLine()?.let {
        if (it.isNotBlank()) {
            it.capitalize()
        } else {
            "butterfly"
        }
    }

非空断言操作符 !!

当变量值为null时,会抛出空指针异常
在这里插入图片描述
在这里插入图片描述

空合并操作符 ?:

如果左边的求值为null,就使用右边的结果值
在这里插入图片描述

二、异常

自定义异常

class MyException : IllegalArgumentException("操作不当")

抛出异常

throw Exception("Hi There!")

异常处理

try {
    // 一些代码
}
catch (e: SomeException) {
    // 处理程序
}
finally {
    // 可选的 finally 块
}

Nothing类型

  • 在 Kotlin 中 throw 是表达式,所以你可以使用它(比如)作为 Elvis 表达式的一部分:

    val s = person.name ?: throw IllegalArgumentException("Name required")
    
  • throw 表达式的类型是特殊类型 Nothing。 该类型没有值,而是用于标记永远不能达到的代码位置。 在你自己的代码中,你可以使用 Nothing 来标记一个永远不会返回的函数:

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

先决条件函数

先决条件函数定义了先决条件,若条件满足,目标代码才能执行
在这里插入图片描述

fun check(letter : String?): String{
    val s = checkNotNull(letter) { "something 不好" }
    return s
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值