📜  Kotlin-异常处理(1)

📅  最后修改于: 2023-12-03 15:02:32.894000             🧑  作者: Mango

Kotlin 异常处理

在 Kotlin 中,异常也是一种异常对象(Exception Object),我们可以使用 try-catch 语句来捕获这些异常。

Try-Catch 语句

Kotlin 中的 Try-Catch 语句的语法与 Java 中的基本一致:

try {
    // 可能出现异常的代码块
} catch (e: Exception) {
    // 处理异常的代码块
} finally {
    // 不管有没有异常,都会执行的代码块
}
  • try 块:包含可能导致异常的代码块。
  • catch 块:提供异常处理程序,以便当 try 块中的代码引发异常时执行处理程序。
  • finally 块:不管有没有异常,都会执行的代码块。通常用于在处理错误和清理资源时使用。
抛出异常

要在 Kotlin 中抛出异常,我们使用 throw 表达式:

throw Exception("This is an exception")

值得注意的是,Kotlin 中的 throw 表达式是作为表达式使用的,这意味着我们可以使用它来返回函数中的异常。

fun divide(a: Int, b: Int): Int {
    if (b == 0) {
        throw IllegalArgumentException("division by zero")
    } else {
        return a / b
    }
}
捕获多个异常

可以使用多个 catch 块来捕获多个异常。下面的示例将捕获两个不同类型的异常:

try {
    // 可能会抛出异常的代码
} catch (e: FileNotFoundException) {
    // 捕获 FileNotFoundException 异常
} catch (e: IOException) {
    // 捕获 IOException 异常
} finally {
    // 不管有没有异常,都会执行的代码块
}
自定义异常类

我们可以定义自己的异常类,只需继承 Throwable 类或其任何子类即可。

class MyException(message: String) : Throwable(message)

自定义异常类也可以只继承 Exception 类或其任何子类,这样子类异常将被视为可检查异常(checked exceptions)。在 Kotlin 中,我们没有被迫处理可检查异常。如果需要定义可检查异常,可以使用 @Throws 注解将其标注为可检查异常。

class MyCheckedException(message: String) : Exception(message)

@Throws(MyCheckedException::class)
fun myFunction() {
    throw MyCheckedException("This is a checked exception")
}
使用 try 表达式

Kotlin 还提供了一种代替 try-catch 语句的 try 表达式,这种表达式将 try 和 catch 组合成一个表达式。如果 try 块中的代码执行正常,则表达式返回 try 块的结果;否则,表达式执行 catch 块。

val result = try {
    // 可能会抛出异常的代码块
} catch (e: Exception) {
    // 出现异常时执行 catch 块,返回 catch 块中的结果
}