我是 kotlin 新手,请各位大佬指教下,就是在 kotlin 编写的方法里抛了 IOException ,在 java 里面调用的时候可以不用强制捕获,这是怎么做到的。
比如在 kt 里抛一个异常,java 里可以直接调用并不用处理异常
- kt
fun test() {
throw IOException("test")
}
- java
public static void main(String[] args) {
test();
}
按我的理解 kotlin 应该会把 checked exception 转换成 runtime exception ,这样才符合 java 的规范,但是实际上我把异常捕获下来发现 catch 住的还是 IOException ,并没有做转化
- java
public static void main(String[] args) {
try {
test();
}catch (Exception e) {
System.out.println(e.getClass());
// 打印 IOException
}
}
这有什么黑魔法在里面吗?

