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

时间:2019-01-25 15:04:46

标签: exception kotlin

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

我注意到我可以继承:Kotlin自己的Exception类型和java.util.Exception。 因此,我一直在寻找答案:Exceptionjava.lang.ExceptionExceptionRuntimeException(由于Kotlin没有检查异常,所以有什么区别)?关于第二个问题:如果将来可以从Java调用Kotlin代码,我觉得最好使用RuntimeException(如果我错了,请纠正我)。

关于Exception,我发现Kotlin的版本只不过是原始Java typealias上的Exception

  

@SinceKotlin(“ 1.1”)公共实际类型别名Exception = java.lang.Exception

拥有此类型别名的目的是什么?我看到的唯一好处是您不必import java.lang.Exception,这使您的源代码更加整洁。想知道这种类型别名背后是否还有其他动机?

1 个答案:

答案 0 :(得分:3)

出于您自己说的相同原因,我通常从RuntimeException扩展过来,kotlin中没有检查过的异常,但是都可以。

kotlin-stdlib中的typealias中有java.lang.Exception的原因是为了将您的kotlin代码与Java运行时/平台分离。这是因为Jetbrains定位到其他runtimes/platform。目的是在理论上使您能够以最小的努力将相同的kotlin代码编译或转译到不同的平台。