Kotlin:尝试,捕捉,并且只有在最后出现错误时

标签 kotlin exception error-handling try-catch

我有一段代码可以像这样抛出和捕获错误

try {

} catch (e: FooException) {

} catch (e: BarException) {

} finally {

}
并且有一些代码只有在至少捕获一个错误时才需要运行,也许是通过一些想象的catchfinally堵塞。除了存储 errorCaught变量并在 finally 中检查它,有没有更易读的选择?

最佳答案

finally的目的|就是执行一段代码,不管是否抛出任何异常。恕我直言,应该这样使用它以获得更好的可读性。一个通用的 catch block 最适合您的用例,而不是 finally堵塞。我建议做以下事情。
将代码放入函数中,删除 finally block ,并从单个 catch block 中抛出异常

fun newMethod() {
    try {
        // do something
    } catch (e: FooException) {
        // do something
        throw e
    } catch (e: BarException) {
        // do something
        throw e
    }
}
从调用者那里,有一个通用的 catch堵塞
try {
    newMethod()
} catch {
    // execute code that wanted to execute for any exception
}
从一个单独的地方,如果你需要一个 finally block ,你可以在那里实现它。
try {
    newMethod()
} catch {
    // do something
} finally {
    // finally block
}

关于Kotlin:尝试,捕捉,并且只有在最后出现错误时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65552962/

相关文章:

mongodb - mongoDB中重复 key 的错误处理

c# - 如何处理更新实体。 NHibernate + ASP.NET MVC

exception - 如果 thunk 导致异常,异常是否会保留为 thunk 的结果?

php - 如何在接口(interface)文档中记录@throws

php - 无法访问cpanel,获取 “HTTP ERROR 500”

vb.net - vb.net 回调中的错误处理

firebase - 为什么在 Kotlin 中迭代 firebase 数据库时元素值添加了两次?

gradle - 在Kotlin构建文件中执行注册的任务

spring - Kotlin application.yml 数据类寻找 beans

kotlin - 静态导入 Kotlin Companion 方法?