Kotlin-异常
来源:互联网 发布:vscode 新建工程 编辑:程序博客网 时间:2024/06/05 14:54
异常类
在Kotlin中的所有异常类都是Throwable的子类,每个异常都有信息,堆栈信息和可选的异常原因
如果要主动抛出一个异常对象,可以使用throw表达式
throw MyException("This is error")
要捕获异常,可以用try表达式:
try { // some code}catch (e: SomeException) { // 异常处理}finally { // 可选 finally block}
这里可没有或多个catch语句块,finally块也可以省略,不管怎样,都至少要有一个catch或finally.
Try是表达式
try也是表达式,它可能有返回:
val a: Int? = try { parseInt(input) } catch (e: NumberFormatException) { null }
try表达式的返回值有可能是try块中最后一个或者catch块中的其中一个。finally块不会影响表达式的结果.
检查异常
Kotlin中并没有检查,这其中有很多原因,但是我们还是可以提供一个简单示例。
下面的这个例子是来自JDK中的StringBuilder类:
Appendable append(CharSequence csq) throws IOException;
这个签名究竟说明什么?它说在任何时间都可以把字符串附加到一些变量上,我还必须要捕获这个异常,为什么?因为它有可能要执行IO操作,所以它的整体代码可能是这样:
//Javatry { log.append(message)}catch (IOException e) { // Must be safe}
并且这个还不是最好的,具体请查看【Effective Java】65章,不要忽视异常
Nothing类型
在Kotlin是一个表达式,所以你可以使用它,例如它可以是艾维斯表达式的一部分:
val s = person.name ?: throw IllegalArgumentException("Name required")
throw表达式的类型是一个特殊类型Nothing,这个类型没有值并且经常备用来标识一些永远不会被访问的代码块。在你自己的代码中,你也可以用它来标识永远不会返回的函数:
fun fail(message: String): Nothing { throw IllegalArgumentException(message)}
当你调用这个函数的时候,编译器就会知道这个执行不会超出调用范围:
val s = person.name ?: fail("Name required")println(s) // 's'在这里才初始化
阅读全文
0 0
- Kotlin-异常
- Kotlin-异常
- Kotlin 异常处理
- Kotlin基础教程-异常
- Kotlin-33.异常(Exception)
- kotlin 中的异常
- Step into Kotlin - 06 - 异常
- Kotlin笔记(九)异常
- 使用kotlin写个异常小框架
- 【Kotlin】官方文档翻译-异常(Exceptions)
- Kotlin 中 TODO 抛异常怎么处理?
- Kotlin 第十七章: 异常和注解
- view的空指针异常(Kotlin)
- Kotlin 其他(九) --- 异常(Exceptions)
- Kotlin
- Kotlin
- Kotlin
- Kotlin
- hdu 5002 Tree (LCT)
- Centos 6.5 下DNS服务器的搭建与配置
- java swing的布局方式
- 在64位操作系统上安装32位bin文件的解决办法
- excel将一个工作表根据条件拆分成多个工作簿、工作表
- Kotlin-异常
- 学习笔记TF024:TensorFlow实现Softmax Regression(回归)识别手写数字
- 深入探究connect函数
- 【译】LwIP协议栈规范翻译——摘要目录
- NamedParameterJdbcTemplate常用方法总结
- caffe常用层Convolution,SoftmaxLayer和SoftmaxLossLayer原理解析
- 基于qt的c++跨平台windows编程技术
- 实验六——MPEG音频编码
- コンピュターグラフィックス COMPUTER GRAPHICS[FOR CG ENGINEERS]-Appendix-a-0708