我主要了解检查异常的潜在问题以及Kotlin忽略它们的原因。但是,我遇到的问题是我找不到任何简单的方法来向调用者明确指出函数可能抛出的异常。
我在Python中无数次遇到过这个问题,我的程序在运行几个月之后就会崩溃,因为我没有从某个库中实现一个函数我可以使用它来引发一个特殊的异常。虽然被迫捕获异常可能会有很大问题,但很清楚地看到函数可以抛出的所有潜在异常。
回到这个问题,是否有任何简单的方法可以查看函数在Kotlin中抛出的异常?对于用Kotlin调用的Java编写的方法怎么样?即使只是在工具(intelliJ)。我不计算用javadoc或kdoc编写它,因为你正在使用的函数的编写者可能已经省略了它。
答案 0 :(得分:4)
如果你想知道当Kotlin从IntelliJ调用时Java方法会抛出什么异常,你可以使用F1键快捷键来拉出javadoc并在弹出菜单中看到throws声明。
Kotlin函数可以使用@Throws注释声明它抛出的异常。注释显然是可选的,因此您可能不会指望它始终存在。不幸的是,当您在使用@Throws的方法上使用F1键盘快捷键时,它不会显示声明为抛出的异常。需要对这些方法进行Java调用才能捕获注释中声明的这些异常。
Kotlin javadoc可以使用@throws javadoc注释来进一步提供可以在函数中抛出的定义异常。这些确实出现在javadoc和F1帮助弹出窗口中。当然这也是可选的。
答案 1 :(得分:1)
这个名为Result的库是个不错的解决方案。它返回带有值或异常的Result对象,并相应地将其类型更改为成功或失败。它们也可以使用库映射和flatmap函数链接在一起,这有助于消除嵌套的try-catch块。非常酷,我推荐任何发现此问题的人查看它。
当然这只会对利用它的功能有所帮助,所以我不会将其标记为答案。