最近我想知道如果我想创建应用程序特定的异常,我应该在 Kotlin 中继承哪个类。
我注意到我可以继承两者:Kotlin 自己的 Exception
类型和 java.util.Exception
。
所以,我一直在寻找答案: Exception
或 java.lang.Exception
和 Exception
或 RuntimeException
(因为Kotlin 没有检查异常,有什么区别)?关于第二个问题:我觉得如果以后可以从Java中调用Kotlin代码的话,我觉得还是使用RuntimeException
更好(如有错误,请指正)。
关于Exception
我发现Kotlin的版本无非是原始Java Exception
上的typealias
:
@SinceKotlin("1.1") public actual typealias Exception = java.lang.Exception
使用此类型别名的目的是什么?我看到的唯一优点是您不必import java.lang.Exception
,这使得您的源代码更加简洁。想知道这种类型别名背后是否还有其他动机?
最佳答案
我通常从 RuntimeException
进行扩展,原因与您自己所说的相同,即 kotlin 中没有检查异常,但两者都可以。
kotlin-stdlib 中存在 java.lang.Exception
的 typealias
的原因是为了将 kotlin 代码与 java 运行时/平台解耦。这是因为 Jetbrains 的目标是其他 runtimes/platform 。其目的是,理论上您应该能够以最小的努力将相同的 kotlin 代码编译或转译到不同的平台。
关于exception - 在 Kotlin stdlib 中对常见的 java.lang.*Exceptions 进行类型别名的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54367880/