在Scala中抛出异常的代价

时间:2018-05-08 11:03:16

标签: scala exception-handling throw

在Scala中抛出异常是否很昂贵?

更具体地说,在为将来的呼叫映射例外时,例如:

import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global

val fut: Future[Int] = Future(1)

xy在性能方面有很大差异吗?

case class MappedException(message: String) extends Exception(message)

val x = fut.recover {
  case e => throw MappedException(e.getMessage)
}

val y = fut.recoverWith {
  case e => Future.failed(MappedException(e.getMessage))
}

1 个答案:

答案 0 :(得分:0)

不,我认为不会有太大差异。

您应该自己测量它:https://github.com/ktoso/sbt-jmh

  

JMH是一个Java工具,用于构建,运行和分析用Java和其他针对JVM的语言编写的nano / micro / milli / macro基准测试。