scala – 如何在try catch块中初始化val对象?

栏目: Scala · 发布时间: 7年前

内容简介:翻译自:https://stackoverflow.com/questions/17513865/how-could-i-initialize-val-object-in-the-try-catch-block
我在Scala中有这个代码,对象应该是值而不是变量,如何在try块中初始化一个对象?
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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

降维攻击

降维攻击

高德 / 世界图书出版公司 / 2016-3-31 / 39.80元

本书优势: 第一,降维攻击是一个刚开始流行的商业概念,未来随着电影《三体》的上映,这个概念会更加流行,会成为一个全社会的讨论热点。推出这本书,正好借势营销,是一个热点窗口,同时这个概念的商业价值,又符合了时下市场的需求。 第二,这本书的案例和分析,立足于本土,因为降维攻击的思维,很好地表现了国内许多互联网企业崛起的过程,百度,阿里、腾讯、京东等电商的崛起历程都充满了降维的智慧,对于目前......一起来看看 《降维攻击》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具