异常
- 异常
- 异常类
- try是一个表达式
- 检查异常
- java互动
异常
异常类
所有的异常类都是Exception
的子类,每个异常都有个消息,栈踪迹和可选的原因
使用throw表达式,抛出异常
throw Exception("出错啦")
使用try捕获异常
try{}catch(e:Exception)finally{}
有可能不止一个catch块,finally块可以省略
val a:Int?=try{parseInt(input)}catch(e:Exception){null}
检查异常
Kotlin中国没有异常检查,这是由多种原因导致的
下面是JDKStringBuilder
类实现的一个接口
Appendable append(CharSequence csq) throws IOException;
这个签名说明什么?它说明每次我把String添加到什么东西(StringBuilder或者log console等等)上时都会捕获IoException
,因为可能涉及到IO操作(Writer实现了Appendable)所以导致Appendable的接口都得捕获异常
这样是不利的,参看Effective java
Java互动
java
int score = // some score;
String grade;
switch (score) {
case 10:
case 9:
grade = "Excellent";
break;
case 8:
case 7:
case 6:
grade = "Good";
break;
case 5:
case 4:
grade = "Ok";
break;
case 3:
case 2:
case 1:
grade = "Fail";
break;
default:
grade = "Fail";
}
kotlin
var score = // some score
var grade = when (score) {
9, 10 -> "Excellent"
in 6..8 -> "Good"
4, 5 -> "Ok"
in 1..3 -> "Fail"
else -> "Fail"
}