gpt4 book ai didi

scala - 如何在 try catch block 中初始化 val 对象?

转载 作者:行者123 更新时间:2023-12-04 00:21:55 29 4
gpt4 key购买 nike

我在 Scala 中有这段代码,a对象应该是值而不是变量,我如何初始化 a try 块中的对象?

object SomeObject {
private val a : SomeClass

try {
a=someThing // this statement may throw an exception
}
catch {
case ex: Exception=> {
ex.printStackTrace()
}
}
}

最佳答案

Scala 试图避免未定义/空值。但是,如果 try,您可以通过为案例提供返回值来解决问题。失败并初始化 a与全try表达:

private val a: SomeClass =
try {
someThing // this statement may throw an exception
} catch {
case ex: Exception => {
ex.printStackTrace()
someDefault
}
}

更新:在 Scala 中,使用 Try 可能更惯用。来自 scala.util :
val x : Int =
Try({
someThing
}).recoverWith({
// Just log the exception and keep it as a failure.
case (ex: Throwable) => ex.printStackTrace; Failure(ex);
}).getOrElse(1);
Try允许您编写可能以各种方式因异常而失败的计算。例如,如果您有两个 Try 类型的计算你可以打电话
thing1.orElse(thing2).getOrElse(someDefault)

这运行 thing1并返回其结果,如果它成功。如果失败,则继续 thing2 .如果也失败,则返回 someDefault .您也可以使用 recoverrecoverWith使用部分函数从某些异常中恢复(并可能重用这些部分函数)。

关于scala - 如何在 try catch block 中初始化 val 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17513865/

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