Kotlin 受检异常,Java中有两种异常类型,一种是受检异常(checked exception),一种是非受检异常(unchecked exception),在编写Java代码时,由于编译器在编译时会检查受检异常,因此IDEA会提示进行try…catch操作。受检异常显得比较麻烦,一直以来争议比较大,可能会导致Java API变得复杂,在编写代码时,需要进行大量的try…catch
操作,而Kotlin中相比于Java没有了受检异常,IDEA也不会提示进行try…catch
操作。
在Kotlin程序中,当IDEA调用某一个方法时,如果该方法中存在可能出现异常的代码时,编辑器不会提示程序需要进行try…catch
操作,直接运行该程序时会抛出异常信息。接下来我们通过一个案例来看一下Kotlin中可能出现异常的代码块是否会提示进行try…catch
操作。具体代码如下所示。
package com.itheima.chapter04
fun getAge(): Int? {
var age = "Age=18 岁"
return Integer.parseInt(age)
}
fun main(args: Array<String>) {
var age = getAge()
println(" 酷客教程年龄:${age} 岁")
}
运行结果:
Exception in thread"main"java.lang.NumberFormatException:For input string:"Age=18岁"
at com.itheima.chapter04.Exception1Kt.getAge(Exception1.kt:4)
at com.itheima.chapter04.Exception1Kt.main(Exception1.kt:7)
将上述代码放入IDEA中可以看到,第4行代码没有提示进行try…catch
操作。根据上述代码的运行结果可知,如果直接运行该程序,会抛出数字格式转换异常。
如果将上述代码添加上try…catch
操作来捕获这个数字格式转换异常,则程序就不会报错,具体代码如下所示。
package com.itheima.chapter04
fun getAge(): Int? {
try {
var age = "Age=18 岁"
return Integer.parseInt(age)
} catch (e: NumberFormatException) {
return 0
}
}
fun main(args: Array<String>) {
var age = getAge()
println(" 年龄:${age} 岁")
}
运行结果:
年龄:0岁
根据上述代码可知,用try…catch
来处理有异常的代码块就不会在程序运行时抛出异常了。
酷客教程相关文章:
评论前必须登录!
注册