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

Exception 有什么简单的方法可以查看Kotlin函数抛出的异常吗?,exception,intellij-idea,exception-handling,kotlin,unchecked-exception,Exception,Intellij Idea,Exception Handling,Kotlin,Unchecked Exception,我主要理解检查异常的潜在问题,以及Kotlin忽略这些异常的原因。然而,我遇到的问题是,我找不到任何简单的方法来清楚地向调用方指示函数可能抛出哪些异常 我在Python中无数次遇到这个问题,我的程序在运行数月后会崩溃,因为我没有意识到我正在使用的某个库中的函数会引发特定的异常。尽管强制捕获异常可能会有很大的问题,但清楚地看到函数可以抛出的所有潜在异常还是不错的 那么回到问题上来,有没有简单的方法来查看函数在Kotlin中抛出了哪些异常?对于从Kotlin调用的用Java编写的方法呢?即使只是在工

我主要理解检查异常的潜在问题,以及Kotlin忽略这些异常的原因。然而,我遇到的问题是,我找不到任何简单的方法来清楚地向调用方指示函数可能抛出哪些异常

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


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

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

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

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

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


当然,这只对利用它的函数有帮助,所以我不把它作为一个答案。

我想这是不可能的。考虑下面的内容:<代码> VALCLs = Copy.FordNead(a);val方法=cls.getMethod(b);方法.invoke(),其中
a
b
从文件中读取或由用户输入提供。在执行代码之前,您如何知道该代码引发了哪些异常?我的意思是,当您使用反射时,您将丢失所有类型的信息。如果您在Java中使用反射,这些问题难道不适用吗?我认为知道在编译时已知类型的情况下可以抛出哪些异常仍然是有用的。Javadoc是我自己代码的一个很好的解决方案,但问题是许多库中的Javadoc还有很多需要改进的地方,您真的指望开发人员对所有内容都有完整的文档。我想我更多的是在intelliJ或其他工具中寻找一些类似警告的东西,在这些工具中我不必手动检查任何东西,这样我就不会意外地错过一个不明显的库函数异常。似乎到目前为止还不存在这样的情况:/是的,这就是未经检查的异常的工作方式。我知道你的痛苦。F1钥匙?最好写IntelliJ动作名称,而不是可能被重新映射的快捷方式。对我来说不起作用。不确定他用
F1
指的是什么功能,对我来说,总是只显示IDE联机帮助。要查找方法/类文档,我总是推荐
Quick documentation
(默认快捷方式是
Ctrl
/
Cmd
+
Q
)。本文档确实显示了使用
@Throws
注释定义的异常。