检查异常
如上所述,Kotlin没有检查异常。因此,正常情况下,Kotlin函数Java签名不会抛出异常。因此如果我们有一个Kotlin的函数如下所示:
// example.kt
package demo
fun foo() {
throw IOException()
}
我们想要在Java中调用它并捕获异常:
// Java
try {
demo.Example.foo();
}
catch (IOException e) { // error: foo() does not declare IOException in the throws list
// ...
}
我们会在上述代码中在Java编译器中得到一个错误消息,因为foo()没有申明IOException。为了解决这个问题,可以在Kotlin中使用@Throws注解。
@Throws(IOException::class)
fun foo() {
throw IOException()
}