异常类
如你所想,kotlin中所有的异常类跟java一样,都是Throwable类的后代。每个异常类都有消息,堆栈信息。
表现形式,雷同java:
throw Exception( errorMsg ) //不需new关键字
或
try{
//业务代码
}catch( e : Exception ){
//处理异常
}finally{
//可选
}
Try表达式
try表达式返回值是,try的最后一个表达式或者catch块中最后一个表达式。

Nothing特殊类型
在kotlin中throw也属于表达式,它的类型就是nothing类型,该类型没有值。
var temp = a ?: throw Exception("a is null") //返回a的值,或抛异常
可以用nothing来标记一个永远不会返回的函数,通常用来抛异常:

官方解释:

上述temp语句,表示如下:

kotlin中,定义null属于nothing类型:

实际使用kotlin开发中,由于有严格的空安全,个人拙见感觉用处不大。
网友评论