exception - 在 Kotlin stdlib 中对常见的 java.lang.*Exceptions 进行类型别名的目的是什么?

标签 exception kotlin

最近我想知道如果我想创建应用程序特定的异常,我应该在 Kotlin 中继承哪个类。

我注意到我可以继承两者:Kotlin 自己的 Exception 类型和 java.util.Exception。 所以,我一直在寻找答案: Exceptionjava.lang.ExceptionExceptionRuntimeException (因为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.Exceptiontypealias 的原因是为了将 kotlin 代码与 java 运行时/平台解耦。这是因为 Jetbrains 的目标是其他 runtimes/platform 。其目的是,理论上您应该能够以最小的努力将相同的 kotlin 代码编译或转译到不同的平台。

关于exception - 在 Kotlin stdlib 中对常见的 java.lang.*Exceptions 进行类型别名的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54367880/

相关文章:

javascript - 我们如何在 JavaScript 中抛出和捕获 RangeError、ReferenceError、TypeError?

android - Ktlint 与 lint 的区别?

kotlin - 如何在 Kotlin 中惯用地测试非空、非空字符串?

c++ - 在c++中发生任何异常的情况下运行通用代码

css - 使用 Laravel 的 elixir 导入 CSS 文件时出现 ErrorException

swift - 在 Swift 中捕获 NSFileHandleOperationException

android - PagedListAdapter 中的通用列表

java - 有没有办法获取上下文中可用的异常处理程序类/方法的列表?

java - 如何使覆盖层接收触摸事件而不消耗其他应用程序的触摸?

android - NoSuchMethodError使用Kotlin与新的Android数据绑定(bind)