【问题标题】:Is using Try[Unit] the proper way?使用 Try[Unit] 是否正确?
【发布时间】:2014-05-27 20:39:33
【问题描述】:

我最近遇到了Try/Success/Failure 的概念,我想知道如何将它用于返回类型为Unit 的方法。使用Try[Unit] 的方法是否正确?也许我受 Java 背景的影响太大,但是强制调用者处理问题是个好主意吗?

【问题讨论】:

  • 如果方法没有有意义的返回类型(除了可能产生失败),为什么不Option[MyException]None是默认情况,Some(exception)是错误情况下的结果?
  • 是的,Try[Unit] 完全没问题。
  • @Dirk 因为你应该避免特殊情况。如果你有一个方法返回Try[String],另一种方法采用String 并返回Option[Exception],它们比第二种方法返回Try[Unit] 更难一起使用。

标签: scala error-handling scala-2.10


【解决方案1】:

Try[Unit] 正常。例如,如果你持久化实体,你可以使用:

try { 
    em.persist(entity)
} catch{
  case ex:PersistenceException =>
  handle(ex)
} 

或者只是

Try(em.persist(entity)) match {
  case Success(_) => 
  case Failure(ex) => handle(ex)
}

【讨论】:

  • 哦,我不知道此时我还可以使用catch。谢谢。
猜你喜欢
  • 2013-07-13
  • 2015-03-15
  • 1970-01-01
  • 2014-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-08
  • 2021-10-30
相关资源
最近更新 更多