18

我主要了解检查异常的潜在问题以及 Kotlin 忽略它们的原因。但是,我遇到的问题是我找不到任何万无一失的方法来清楚地向调用者表明函数可能抛出的异常。

我在 Python 中无数次遇到这个问题,我的程序在运行几个月后会崩溃,因为我没有意识到我正在使用的某个库中的函数会引发特定的异常。尽管被迫捕获异常可能会带来很大的问题,但很高兴能清楚地看到函数可能抛出的所有潜在异常。

那么回到这个问题,有没有什么简单的方法可以查看一个函数在 Kotlin 中抛出了哪些异常?对于从 Kotlin 调用的用 Java 编写的方法呢?即使只是在工具(intelliJ)中。我不算在 javadoc 或 kdoc 中编写它,因为您正在使用的函数的编写者可能已经省略了它。

4

2 回答 2

6

如果您想知道 Kotlin 从 IntelliJ 调用 Java 方法时会抛出哪些异常,您可以使用 F1 快捷键调出 javadoc 并在弹出菜单中查看 throws 声明。

Kotlin 函数可以使用@Throws注释声明它抛出的异常。注释显然是可选的,所以你可能不能指望它总是存在。不幸的是,当您在使用 @Throws 的方法上使用 F1 键盘快捷键时,它不会显示声明为抛出的异常。需要对这些方法进行 Java 调用才能捕获注释中声明的这些异常。

Kotlin javadoc 可以使用@throws javadoc 注解进一步提供可以在函数中抛出的定义异常。这些确实出现在 javadoc 和 F1 帮助弹出窗口中。当然,这也是可选的。

于 2016-03-17T05:47:29.143 回答
1

这个名为Result的库是一个很好的解决方案。它返回一个带有值或异常的 Result 对象,并相应地将其类型更改为成功或失败。它们也可以使用库 map 和 flatmap 函数链接在一起,这有助于消除嵌套的 try-catch 块。非常酷,我建议任何发现此问题的人检查一下。

当然,这仅对利用它的功能有所帮助,因此我不会将此标记为答案。

于 2016-04-23T21:07:40.240 回答