Scala 使用Try[Unit]是否正确?

Scala 使用Try[Unit]是否正确?,scala,error-handling,scala-2.10,Scala,Error Handling,Scala 2.10,我最近遇到了Try/Success/Failure的概念,我想知道如何将它用于具有返回类型单元的方法。使用Try[Unit]是否正确?也许我太受Java背景的影响了,但是强制调用方处理这个问题是一个好主意吗?Try[Unit]是正常的。例如,如果持久化实体,则可以使用: try { em.persist(entity) } catch{ case ex:PersistenceException => handle(ex) } 或者只是 Try(em.persist(e

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

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

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

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

如果该方法没有有意义的返回类型(除了可能生成失败),为什么不使用
选项[MyException]
None
作为默认情况,并将
Some(exception)
作为出现错误时的结果?是的,
Try[Unit]
非常好。@Dirk,因为您应该避免特殊情况。如果有一个方法返回
Try[String]
,另一个方法获取
String
并返回
Option[Exception]
,那么它们比第二个方法返回
Try[Unit]
时更难一起使用。哦,我不知道此时我也可以使用catch。谢谢