栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Kotlin基础 空安全与异常

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kotlin基础 空安全与异常

一. 空安全

       

1.null

        Kotlin会把可能出现null问题,在编译时以报错的方式,提前在编译期强怕我们重视起来,而不是等到运行时报错,防范于未然。

2.Kotlin的null类型

        在Kotlin中我们可以这样来定义空类型。

//想要把属性设置为空需要在类型处加? 
var str:String?= readLine()
    str=null
    println("input:$str")

3.空安全

        Kotlin区分可空类型和非可空类型,所以你用一个可空类型变量打印或调用函数,而他

有可能不存在,这种情况编辑器会随时报错。

1.安全调用操作符

         我们可以使用空安全调用操作符,使用后它会检查属性值,而过为null则不调用

fun main() {
   // 加?为空不调用
  var str= readLine()?.capitalize()
    println("input:$str")

}

         安全调用运行在可空类型上调用函数,但是如果还想做点额外的事,比如为空时返回一个字段,我们可以使用let函数,它的主要作用是让你在指定的作用域内定义一个或多个变量。

fun main() {
  var str: String? = "butterfly"
  str = null
  str = str?.let {
    if (it.isNullOrBlank()) {
      "butterfly"
    } else {
      it.capitalize()
    }
  }
  println("$str")

}
2.使用非空断言操作符

        !!由称感叹号操作符,当变量值为null时,他会调用后续方法

        

fun main() {
  var str :String? ="butterfly"
  str=null
    //!! 为空继续执行
  print(str!!.capitalize())
   

}
3.使用if来判断null情况

        我们也可以使用if判断,但是相比之下安全调用操作符用起来更灵活,更容易链式调用。

fun main() {
    var str = readLine()
    if (str != null) {
        str = str.capitalize()
        println(str)
    } else {
        println("为null.")
    }
}

                  

4.空合并操作符
fun main() {
    var str: String? = "jack"
    str = str?.let { it.capitalize() } ?: "butterfly"
    print(str)
}

二.异常

1.抛出异常
class ExceptionFix ():IllegalAccessException("操作异常")


fun main() {
    var  num:Int? =null;
    //如果number为空那么就拋出异常
    num ?:throw  ExceptionFix()
}
2.处理异常
fun main() {
    var  num:Int? =null;
    try {
        num!!.plus(1)
    }catch (e: Exception){
        print(e)
    }
}
3先决条件函数
fun main() {
    var  num:Int? =null;
    try {
        checkOperation(num)
      //  num!!.plus(1)
    }catch (e: Exception){
        print(e)
    }
}

fun checkOperation(number:Int?){
    //如果number为空那么就拋出异常
    //number ?:throw  ExceptionFix()
    //如果前面为空就抛出后面 表达式中的内容
    checkNotNull(number,{"checkNotNull"})
    //如果前面为false就抛出后面 表达式中的内容
    require(false,{"require"})
    //如果前面为空就抛出后面 表达式中的内容
    requireNotNull(number,{"requireNotNull"})
    //如果参数为null,则异常,否则抛出表达式中的内容
    error(number)
    //如果前面为false就异常
    assert(true,{"assert"})
}

      

 

        

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/606256.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号