如何处理Kotlin中的异常?

Vol*_*yrH 6 kotlin

我开始学习Kotlin,我无法理解如何处理异常.我知道没有经过检查的,但无论如何,如果我的方法抛出一个,我该怎么办?例如:

fun test(a: Int, b: Int) : Int {
    return a / b
}
Run Code Online (Sandbox Code Playgroud)

如果我除以零,我将有ArithmeticException.那我该怎么办呢?

Jac*_*hoi 8

您可以编写扩展函数以在装入异常时返回默认值.

fun <T> tryOrDefault(defaultValue: T, f: () -> T): T {
    return try {
        f()
    } catch (e: Exception) {
        defaultValue
    }
}

fun test(a: Int, b: Int) : Int = tryOrDefault(0) {
    a / b
}
Run Code Online (Sandbox Code Playgroud)


zsm*_*b13 6

ArithmeticException是运行时异常,因此在Java中也将不对其进行检查。您选择的处理方式也与Java中的相同:

  • 忽略它并在运行时崩溃
  • try-catch块将其包裹。您可以从发生的任何地方捕获它,而无需任何throws声明。

由于在科特林没有检查异常,还没有一个throws关键字下去,但如果你是混合科特林和Java,并要强制异常处理在Java代码中检查的异常,你可以用你的注释方法@Throws的注释。

有关异常的信息,请参阅Kotlin官方文档。


Fre*_*ros 6

另外,由于kotlin中的try-catach可以返回值,因此您的代码可能如下所示:

fun test(a: Int, b: Int) : Int {
    return try {a / b} catch(ex:Exception){ 0 /*Or any other default value*/ }
}
Run Code Online (Sandbox Code Playgroud)