我有一段代码可以像这样抛出和捕获错误
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/