gpt4 book ai didi

exception - kotlin如何将检查异常更改为运行时异常?

转载 作者:行者123 更新时间:2023-12-02 03:06:14 29 4
gpt4 key购买 nike

我已经知道 kotlin 中没有这样的“检查”异常。

但我想知道 kotlin 如何在内部“转换”检查异常为运行时异常。

例如,当不存在此类文件时,下面的代码将从 java.io 包(而不是从 kotlin 包)抛出 FileNotFoundException。

var s = File("hello.txt").inputStream()

当然,不需要显式添加 try-catch block ,但我很好奇它在内部是如何工作的。

我认为他们以某种方式将所有 java 检查的异常重新实现为 kotlin 友好的运行时异常,但我的猜测似乎不正确。

最佳答案

运行时检查异常与未检查异常没有什么不同。它们在 Java 中的不同之处在于 Java 编译器处理它们的方式。它拒绝编译抛出已检查异常的代码,而无需在方法的 throws 子句中声明它。 Kotlin 编译器根本没有这个规则,并且接受这样的源代码。

请注意,您实际上可以使用 Java 编译器进行欺骗并抛出已检查的异常,而无需在 throws 子句中声明它:

public void haha() {
IOException e = new IOException();
sneakyThrow(e);
}

private <E extends Exception> void sneakyThrow(Exception e) throws E {
throw (E) e;
}

关于exception - kotlin如何将检查异常更改为运行时异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58944722/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com