あるメソッドでいくつかの例外をスローし、別のメソッド セットでエラー コードを返す可能性のある Java ライブラリを使用する必要があります。これまでのところ、次のような醜いコードにつながります
val txn = mgr.prepareTransaction()
val accessRecord = txn.readByQuery(...)
var state : Either[MyError, Result] = null //
try {
// do something here
val result = txn.runCodeWithin(new Callable[Result]() {...})
if (result == -1) {
state = Left(CanNotReadRecord)
} else {
state = Right(txn.getCachedRecord())
}
} catch {
case e: Exception => state = Left(GeneralError(e))
} finally {
state match {
case Right(_) => txn.commit();
case _ => txn.rollback();
}
}
私は主に状態をvarとして取り除き、finally ブロックで状態をチェックする機能に興味があります。ご意見をお聞かせください。