有什么简单的方法可以查看 Kotlin 函数抛出的异常吗?

Is there any easy way to see what exceptions a Kotlin function throws?

我基本上理解已检查异常的潜在问题以及 Kotlin 忽略它们的原因。但是,我遇到的问题是我找不到任何万无一失的方法来向调用者清楚地指示函数可能抛出哪些异常。

我在 Python 中无数次 运行 遇到这个问题,在 运行 几个月后我的程序会崩溃,因为我没有从某个库中实现我的功能m using 会引发特定异常。尽管强制捕获异常可能会带来很多问题,但很高兴能够清楚地看到一个函数可能抛出的所有潜在异常。

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

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

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

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

这个名为 Result 的库是一个不错的解决方案。它 returns 一个带有值或异常的结果对象,并相应地将其类型更改为成功或失败。它们也可以使用库 map 和 flatmap 函数链接在一起,这有助于消除嵌套的 try-catch 块。太棒了,我建议任何发现这个问题的人都来看看。

当然,这只对利用它的函数有帮助,所以我不会将其标记为答案。