📅  最后修改于: 2023-12-03 15:02:32.894000             🧑  作者: Mango
在 Kotlin 中,异常也是一种异常对象(Exception Object),我们可以使用 try-catch 语句来捕获这些异常。
Kotlin 中的 Try-Catch 语句的语法与 Java 中的基本一致:
try {
// 可能出现异常的代码块
} catch (e: Exception) {
// 处理异常的代码块
} 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")
}
Kotlin 还提供了一种代替 try-catch 语句的 try 表达式,这种表达式将 try 和 catch 组合成一个表达式。如果 try 块中的代码执行正常,则表达式返回 try 块的结果;否则,表达式执行 catch 块。
val result = try {
// 可能会抛出异常的代码块
} catch (e: Exception) {
// 出现异常时执行 catch 块,返回 catch 块中的结果
}