最近,我想知道如果我想创建特定于应用程序的异常,应该在Kotlin中继承哪个类。
我注意到我可以继承:Kotlin自己的Exception
类型和java.util.Exception
。
因此,我一直在寻找答案:Exception
或java.lang.Exception
和Exception
或RuntimeException
(由于Kotlin没有检查异常,所以有什么区别)?关于第二个问题:如果将来可以从Java调用Kotlin代码,我觉得最好使用RuntimeException
(如果我错了,请纠正我)。
关于Exception
,我发现Kotlin的版本只不过是原始Java typealias
上的Exception
:
@SinceKotlin(“ 1.1”)公共实际类型别名Exception = java.lang.Exception
拥有此类型别名的目的是什么?我看到的唯一好处是您不必import java.lang.Exception
,这使您的源代码更加整洁。想知道这种类型别名背后是否还有其他动机?
答案 0 :(得分:3)
出于您自己说的相同原因,我通常从RuntimeException
扩展过来,kotlin中没有检查过的异常,但是都可以。
kotlin-stdlib中的typealias
中有java.lang.Exception
的原因是为了将您的kotlin代码与Java运行时/平台分离。这是因为Jetbrains定位到其他runtimes/platform。目的是在理论上使您能够以最小的努力将相同的kotlin代码编译或转译到不同的平台。