Scala試圖避免undefined/null值。但是,您可以通過給返回值如果try
失敗的情況下,並與整個try
表達初始化a
解決的問題:
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
從部分函數中恢復某些異常(並可能重用這些部分函數)。
如果'try'失敗,'a'的值應該是多少? –
@TheTerribleSwiftTomato我會爲null或未定義的東西。我只是想在try catch中初始化它們,因爲賦值可能會拋出異常 – Pooya
@TheTerribleSwiftTomato喜歡打開文件流 – Pooya