Scalaで例外を扱うための肩であるTry型のサンプルを紹介していきます。
Scala Tryのサンプル
def main(args: Array[String]) : Unit = { println(trySample(1, 1)) // Success(1) println(trySample(1, 0)) // Failure(java.lang.ArithmeticException: / by zero) // 成功時のみ処理を実施 println("=== foreach ===") trySample(1, 1).foreach(println) // 1 trySample(1, 0).foreach(println) // 何もしない // 失敗時のみ処理を実施 println("=== failed.foreach ===") trySample(1, 1).failed.foreach(println) // 1 trySample(1, 0).failed.foreach(println) // 何もしない // mapで処理 println("=== map ===") println(trySample(1, 1).map(_ * 2)) // Success(2) println(trySample(1, 0).map(_ * 2)) // Failure(java.lang.ArithmeticException: / by zero) // flatMapで処理 println("=== map ===") println(trySample(1, 1).flatMap(trySample(1, _))) // Success(1) println(trySample(1, 0).flatMap(trySample(1, _))) // Failure(java.lang.ArithmeticException: / by zero) // recover println("=== recover ===") val res1 = trySample(1, 0).recover { case e: ArithmeticException => 0 } println(res1) // Success(0) // recoverWith(結果をTry型で返したい時に使用) println("=== recoverWith ===") val res2 = trySample(1, 0).recoverWith { case e: ArithmeticException => Try(0) } println(res2) // Success(0) // getOrElse println("=== getOrElse ===") println(trySample(1, 1).getOrElse(0)) // 1 println(trySample(1, 0).getOrElse(0)) // 0 } def trySample(int1 : Int, int2 : Int): Try[Int] = { Try(int1 / int2) }