Kotin documentation says“Kotlin中的所有异常类都是Throwable类的后代,每个异常都有消息,堆栈跟踪和可选原因。”为什么getMessage()在Kotlin中有一个Exception类的未解析引用?
The Java documentation for Throwable显示了一个getMessage()方法。但Kotlin documentation for Throwable没有getMessage()。所以这个代码:
fun main(args: Array<String>)
{
try
{
println("args size: ${args.size}");
}
catch (e: Exception)
{
println(e.getMessage())
System.exit(1)
}
}
给我这个编译错误:
test_exception.kt:12:17: error: unresolved reference: getMessage
println(e.getMessage())
^
暗示我使用从科特林的Throwable类派生的科特林Exception类。
但是,如果我改变的getMessage()来的toString(),并添加一个扔:
fun main(args: Array<String>)
{
try
{
println("args size: ${args.size}");
throw Exception("something went wrong")
}
catch (e: Exception)
{
println(e.toString())
System.exit(1)
}
}
我得到这个消息:
java.lang.Exception: something went wrong
这似乎是说,Exception类是不一个Kotlin异常类 - 但是有一个getMessage()方法的java版本,当我尝试使用它时,我不应该得到编译错误。