如何查找某些库代码可能引发的异常

时间:2019-05-27 18:59:18

标签: kotlin

我是Kotlin的新手,但遇到以下问题:在我的项目中,我使用的是小型图书馆(JAR,无资料)。在其中定义了一些自定义异常类,它们继承了Exception类。一些方法会抛出这些异常。

在我的代码中,我遇到了一个问题,即我不知道库代码可能引发什么异常,因此我可以捕获它,因此有时异常会通过屋顶。

在Kotlin中处理这种情况的通常方法是什么?

2 个答案:

答案 0 :(得分:1)

通常,此类异常应在您正在使用的库的文档(JavaDoc,KDoc或网站)中声明。除了反编译代码并自己逐步处理之外,没有结构化的方法来获取函数可能引发的所有异常。 (例如,通过使用反编译器中的构建,喷气脑便装在了IntelliJ中)

您也可以捕获所有例外,但我总是会争论,这在几乎所有情况下都不是一个好的决定。

答案 1 :(得分:1)

我不完全了解kotlin的正确方法,但是您可以使用scala中的以下想法: Sub DictWatch() Dim d As Object, k Set d = CreateObject("scripting.dictionary") d.Add "one", 1 Stop 'add a watch on the expression d("one") before proceeding d.RemoveAll Stop 'enter "? d("test")" in Immediate pane and hit enter before proceeding For Each k In d.keys Debug.Print k 'output is "one" and "test" Next k End Sub -

Try

如果异常不是致命的:

try Success(r) catch {
  case NonFatal(e) => Failure(e)
}

然后只需返回 case _: VirtualMachineError | _: ThreadDeath | _: InterruptedException | _: LinkageError | _: ControlThrowable => false case _ => true ,否则将其抛出。 怎么使用呢?至少您不会像这样结束:

Failure(e)

是的,您仍然不知道哪些代码可能引发异常,但是使用这种方法可以控制一般的执行流程。

但是,当然,如果文档列出了可能抛出的异常会更好。