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

Kotlin 如何查找某些库代码可能引发的异常,kotlin,Kotlin,我是Kotlin的新手,我有以下问题:在我的项目中,我使用了一个小库(JAR,没有源代码)。在它中,很少定义继承exception类的自定义异常类。有些方法抛出这些异常 在我的代码中,我遇到了一个问题,我不知道库代码可能抛出什么异常,所以我可以捕获它,因此有时异常会通过屋顶 在Kotlin中处理此类情况的通常方法是什么?通常,应在您使用的库(JavaDoc、KDoc或网站)的文档中声明此类异常。除了反编译代码并自己单步执行之外,没有结构化的方法可以获取函数可以抛出的所有异常。(例如,通过使用内置

我是Kotlin的新手,我有以下问题:在我的项目中,我使用了一个小库(JAR,没有源代码)。在它中,很少定义继承
exception
类的自定义异常类。有些方法抛出这些异常

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


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

通常,应在您使用的库(JavaDoc、KDoc或网站)的文档中声明此类异常。除了反编译代码并自己单步执行之外,没有结构化的方法可以获取函数可以抛出的所有异常。(例如,通过使用内置反编译器,jet brains在IntelliJ中发布)


您也可以捕获所有异常,但我始终认为,这在几乎所有情况下都不是一个好的决定。

通常,这些异常应该在您使用的库(JavaDoc、KDoc或网站)的文档中声明。除了反编译代码并自己单步执行之外,没有结构化的方法可以获取函数可以抛出的所有异常。(例如,通过使用内置反编译器,jet brains在IntelliJ中发布)


您也可以捕获所有异常,但我始终认为,这在几乎所有情况下都不是一个好的决定。

我不知道kotlin的正确方法,但您可以使用scala的以下想法:
试试看
-

try Success(r) catch {
  case NonFatal(e) => Failure(e)
}
如果异常不是致命的:

 case _: VirtualMachineError | _: ThreadDeath | _: InterruptedException | _: LinkageError | _: ControlThrowable => false
 case _ => true
然后返回
Failure(e)
,否则抛出它。 你如何使用它?至少你不会这样结束:

try {
...
} catch {
    case _ : Throwable => ... // catch all exceptions
}
是的,您仍然不知道代码可能抛出哪些异常,但是使用这种方法您可以控制一般的执行流


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

我不知道kotlin的正确方法,但您可以使用scala的以下想法:
试试看
-

try Success(r) catch {
  case NonFatal(e) => Failure(e)
}
如果异常不是致命的:

 case _: VirtualMachineError | _: ThreadDeath | _: InterruptedException | _: LinkageError | _: ControlThrowable => false
 case _ => true
然后返回
Failure(e)
,否则抛出它。 你如何使用它?至少你不会这样结束:

try {
...
} catch {
    case _ : Throwable => ... // catch all exceptions
}
是的,您仍然不知道代码可能抛出哪些异常,但是使用这种方法您可以控制一般的执行流

但当然,如果文档列出可能抛出的异常,情况会好得多