本文概述
- 没有异常处理的问题
- 通过异常处理解决
- Kotlin尝试将块作为表达式
try with catch块的语法
try{//code that may throw exception}catch(e: SomeException){//code that handles exception}
try{//code that may throw exception}finally{// code finally block}
try catch和finally块的语法
try {// some code}catch (e: SomeException) {// handler}finally {// optional finally block}
没有异常处理的问题我们来看一个导致未处理异常的示例。
fun main(args: Array<
String>
){val data = http://www.srcmini.com/20 / 0//may throw exceptionprintln("code below exception ...")}
上面的程序生成一个异常, 该异常导致低于该异常的其余代码不可执行。
输出:
Exception in thread "main" java.lang.ArithmeticException: / by zero at ExceptionHandlingKt.main(ExceptionHandling.kt:2)
通过异常处理解决让我们通过使用try-catch块来查看上述问题的解决方案。
fun main(args: Array<
String>
){try {val data = http://www.srcmini.com/20 / 0//may throw exception} catch (e: ArithmeticException) {println(e)}println("code below exception...")}
输出:
java.lang.ArithmeticException: / by zerocode below exception...
在上面的程序中, 在执行try-catch块之后, 将执行异常下面的其余代码。
Kotlin尝试将块作为表达式我们可以使用try块作为返回值的表达式。 try表达式返回的值是try块的最后一个表达式或catch的最后一个表达式。 finally块的内容不影响表达式的结果。
Kotlin尝试作为表达示例
让我们看一下try-catch块作为返回值的表达式的示例。在此示例中, Int的字符串值不生成任何异常, 并返回try块的最后一条语句。
fun main(args: Array<
String>
){val str = getNumber("10")println(str)}fun getNumber(str: String): Int{return try {Integer.parseInt(str)} catch (e: ArithmeticException) {0}}
输出:
10
让我们修改上面的代码, 生成一个异常并返回catch块的最后一条语句。
fun main(args: Array<
String>
){val str = getNumber("10.5")println(str)}fun getNumber(str: String): Int{return try {Integer.parseInt(str)} catch (e: NumberFormatException) {0}}
输出:
0
推荐阅读
- Kotlin教程介绍
- Kotlin抛出关键字throw
- Kotlin字符串
- Kotlin智能投射
- Kotlin set接口
- Kotlin密封类
- Kotlin return跳转表达式
- Kotlin正则表达式
- Kotlin正则表达式模式