Kotlin 自定义异常

Kotlin 自定义异常,在Kotlin标准库中封装了大量的异常类,虽然这些异常类可以描述编程时出现的大部分异常情况,但是在程序开发中有时可能需要描述程序中特有的异常情况,例如在设计一个变量name的值时,不允许该变量的值为null,为了解决这个问题,Kotlin与Java一样,也允许用户自定义异常,但自定义的异常类必须继承自Throwable类或其子类,自定义异常类的主构函数可以传递一个String类型的message参数,也可以不传递参数,自定义异常类的语法格式如下:

//主构函数带参数的异常类 
class异常类名称(override val message: String?) : Throwable() {} 
//主构函数不带参数的异常类 
class异常类名称() : Throwable() {}

在上述语法格式中,主构造函数带message参数的异常类,在抛出异常信息时会打印message信息,主构造函数不带message参数的异常类,在抛出异常信息时不会打印异常的具体信息。

接下来我们通过一个案例来学习自定义异常,具体代码如下所示。

package com.itheima.chapter04
class MyException(override val message: String?) : Throwable() {
}
fun main(args: Array<String>) {
    var name: String? = null
    name?.length ?: throw MyException("变量name 的值为null")
    println("name.length=${name.length}")
}

运行结果:

Exception in thread"main"com.itheima.chapter04.MyException:变量name的值为null

从运行结果可以看出,程序在运行时发生了异常,这是因为在程序中使用throw关键字抛出异常对象时,需要使用try…catch语句对抛出的异常进行处理。为了解决该程序运行时发生异常的问题,可以修改该程序,在抛出异常的地方使用try…catch语句对异常进行处理,修改后的代码如下所示。

package com.itheima.chapter04
class MyException(override val message: String?) : Throwable() {
}
fun main(args: Array<String>) {
    var name: String? = null
    try {
        name?.length ?: throw MyException("变量name 的值为null")
        println("name.length=${name.length}")
    } catch (e: MyException) {
       println(e.message)
   }
}

运行结果:

变量name的值为null

在上述代码中,使用了一个try…catch语句用于捕获变量name的值为null时抛出的异常,在调用“name?.length”代码时,由于变量name的值不能为null,程序会抛出一个自定义异常MyException,该异常被捕获后最终被catch代码块处理,并打印异常信息。

酷客教程相关文章:

赞(0)

评论 抢沙发

评论前必须登录!