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版本,當我嘗試使用它時,我不應該得到編譯錯誤。