作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 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
}
}
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
.您也可以使用
recover
或
recoverWith
使用部分函数从某些异常中恢复(并可能重用这些部分函数)。
关于scala - 如何在 try catch block 中初始化 val 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17513865/
我是一名优秀的程序员,十分优秀!