内容简介:翻译自:https://stackoverflow.com/questions/17513865/how-could-i-initialize-val-object-in-the-try-catch-block
object SomeObject {
private val a : SomeClass
try {
a=someThing // this statement may throw an exception
}
catch {
case ex: Exception=> {
ex.printStackTrace()
}
}
}
Scala尝试避免undefined / null值.但是,如果尝试失败并使用整个try表达式初始化a,则可以通过为案例提供返回值来解决问题:
private val a: SomeClass =
try {
someThing // this statement may throw an exception
} catch {
case ex: Exception => {
ex.printStackTrace()
someDefault
}
}
更新:在Scala中,使用scala.util中的
Try
可能更为惯用:
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从使用部分函数的某些异常中恢复(并可能重用这些部分函数).
翻译自:https://stackoverflow.com/questions/17513865/how-could-i-initialize-val-object-in-the-try-catch-block
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Spring对象创建初始化分析
- 从几道面试题看对象的初始化
- Go 创建对象时,如何优雅的传递初始化参数
- java中具有继承关系的类及其对象初始化顺序
- C++ 的一大误区——深入解释直接初始化与复制初始化的区别
- 初始化监听端口
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Effective C# 中文版
Bill Wagner / 李建忠 / 人民邮电出版社 / 2007-5 / 49.00元
本书围绕一些关于C#和.NET的重要主题,包括C#语言元素、.NET资源管理、使用C#表达设计、创建二进制组件和使用框架等,讲述了最常见的50个问题的解决方案,为程序员提供了改善C#和.NET程序的方法。本书通过将每个条款构建在之前的条款之上,并合理地利用之前的条款,来让读者最大限度地学习书中的内容,为其在不同情况下使用最佳构造提供指导。 本书适合各层次的C#程序员阅读,同时可以推荐给高校教......一起来看看 《Effective C# 中文版》 这本书的介绍吧!