Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理Kotlin中的异常?_Kotlin - Fatal编程技术网

如何处理Kotlin中的异常?

如何处理Kotlin中的异常?,kotlin,Kotlin,我开始学习Kotlin,但我不知道如何处理异常。我知道没有检查过的,但无论如何,如果我的方法抛出一个,我该怎么办?例如: fun test(a: Int, b: Int) : Int { return a / b } 如果我除以零,我将有算术异常。那么我应该如何处理这些事情呢?是一个运行时异常,所以在Java中也可以不检查它。您处理它的选择与Java中的相同: 忽略它并在运行时发生崩溃 用try catch块将其包装起来。您可以在堆栈的任何位置捕捉到它,而不需要任何抛出声明 由于K

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

fun test(a: Int, b: Int) : Int {
    return a / b
}
如果我除以零,我将有算术异常。那么我应该如何处理这些事情呢?

是一个运行时异常,所以在Java中也可以不检查它。您处理它的选择与Java中的相同:

  • 忽略它并在运行时发生崩溃
  • try catch
    块将其包装起来。您可以在堆栈的任何位置捕捉到它,而不需要任何
    抛出
    声明
由于Kotlin中没有检查过的异常,因此也没有
抛出
关键字,但是如果您混合使用Kotlin和Java,并且希望在Java代码中强制对检查过的异常进行异常处理,则可以使用注释对方法进行注释


请参阅Kotlin官方文档中有关异常的内容。

由于在Kotlin中试用catach可以返回值,因此您的代码可能如下所示:

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

当遇到异常时,您可以编写一个扩展函数来返回默认值

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
}
fun tryorfaulture(默认值:T,f:()->T):T{
回击{
f()
}捕获(e:例外){
默认值
}
}
趣味测试(a:Int,b:Int):Int=tryOrDefault(0){
a/b
}

您可以返回Try,以便客户端可以调用issucess或isFailure


也可以返回Int?因此,客户端将知道该值可能不存在(被零除时)。

try-catch
的工作方式与Java中的工作方式基本相同。您可以在关于异常的文档中看到它。@zsmb13所以我可以处理“已检查”的异常,只是不在方法签名中写入抛出?这样写可以吗?如果是这样,请写下来作为答案,我将结束这个问题。返回尝试,以便客户可以调用isSuccess或isFailure