scala - 从选项转换为尝试

标签 scala error-handling

最近,我发现自己正在编写一个通用实用程序,将Option转换为scala.util.Try,如下所示:

implicit class OptionTry[A](oa: Option[A]) extends AnyVal {

  def asTry[E <: Exception](e: E): Try[A] = oa match {
    case Some(a) => Success(a)
    case None    => Failure(e)
  }

  def asTry(msg: String): Try[A] = asTry(new Exception(msg))
}

现在我想知道为什么标准库不提供它。我想念什么吗?

最佳答案

这个问题可能是题外话,因为除了意见或猜测外,我没有其他答案,但这是我的猜测。

引入Trytry-catch语法的替代方法。在Scala世界中,异常在某种程度上并不常见,并且Try可以帮助您处理抛出的API,而不是鼓励您使用异常。

似乎您在EitherTry更合适的情况下使用此功能。例如,我建议不要使用o.asTry("xyz")来获取Try[A],而是建议o.toRight("xyz")来获取Either[String, A]

关于scala - 从选项转换为尝试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34116266/

相关文章:

php - 如果案例为真,需要向用户抛出错误

c# - 错误消息与抛出异常 C# ASP.Net

java - 引用 Java Enum 作为 Scala 中的类型参数

c - 该程序的输出

ruby-on-rails - 抛出异常/错误时的错误处理

scala - 如何忽略每个 Scala 版本的子模块,比如 2.10?

java - 捕获 OutOfMemoryError 但不增加堆大小

scala - Play Framework 2.5 scala i18n

string - 如何在 Scala 的运行时将字符串转换为符号?

scala - 如何让 Play 2.0 框架忽略路由