Scala は未定義/null 値を回避しようとします。tryただし、失敗した場合の戻り値を指定し、式a全体で初期化することで問題を解決できます。try
private val a: SomeClass =
try {
someThing // this statement may throw an exception
} catch {
case ex: Exception => {
ex.printStackTrace()
someDefault
}
}
更新:Try Scala では、 fromを使用する方がおそらくより慣用的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さまざまな方法で例外で失敗する可能性のある計算を作成できます。たとえば、タイプの計算が 2 つある場合は、次のようにTry呼び出すことができます。
thing1.orElse(thing2).getOrElse(someDefault)
これが実行thing1され、成功した場合は結果が返されます。失敗した場合は、 に進みthing2ます。それも失敗した場合は、 を返しますsomeDefault。recoverまたはを使用して、部分関数を使用して一部の例外から回復することもできrecoverWithます (これらの部分関数を再利用する可能性もあります)。