我是Kotlin的新手,但遇到以下问题:在我的项目中,我使用的是小型图书馆(JAR,无资料)。在其中定义了一些自定义异常类,它们继承了Exception
类。一些方法会抛出这些异常。
在我的代码中,我遇到了一个问题,即我不知道库代码可能引发什么异常,因此我可以捕获它,因此有时异常会通过屋顶。
在Kotlin中处理这种情况的通常方法是什么?
答案 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)
是的,您仍然不知道哪些代码可能引发异常,但是使用这种方法可以控制一般的执行流程。
但是,当然,如果文档列出了可能抛出的异常会更好。