gpt4 book ai didi

kotlin - 我应该在 Kotlin 中使用 Closable.use{...} 处理异常吗?

转载 作者:行者123 更新时间:2023-12-02 12:34:29 24 4
gpt4 key购买 nike

据来源Closable.use , 如果发生错误,则会抛出异常。

public inline fun <T : Closeable?, R> T.use(block: (T) -> R): R {
var exception: Throwable? = null
try {
return block(this)
} catch (e: Throwable) {
exception = e
throw e
} finally {
when {
apiVersionIsAtLeast(1, 1, 0) -> this.closeFinally(exception)
this == null -> {}
exception == null -> close()
else ->
try {
close()
} catch (closeException: Throwable) {
// cause.addSuppressed(closeException) // ignored here
}
}
}

Closable.use 的大多数示例中, try-catch 没有使用,如下所示。
为什么不需要错误处理?安全吗?

    BufferedReader(FileReader("test.file")).use { return it.readLine() }

最佳答案

我们从 Kotlin 文档中看到 use 的目的是什么功能:

Executes the given block function on this resource and then closes it down correctly whether an exception is thrown or not.



如果块函数成功完成或抛出异常,此函数将正确关闭资源。处理块函数的结果是您的责任。

如果抛出异常并且有办法处理它并继续执行代码,请使用 try/catch。如果无事可做并且控制权应该传递给调用者,则没有必要使用 try/catch。

关于kotlin - 我应该在 Kotlin 中使用 Closable.use{...} 处理异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62156108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com