我有一些代码可能会产生异常(如果有的话),如果成功运行则不返回任何内容。
我的问题是:有没有最好的办法处理此类案件?
实际上,我正在使用返回Try[Unit]
或Failure(exception)
的{{1}},但我想知道这是否正确?如果有最好的做法?或者在这种情况下使用更好的方法?
以下是我的代码概述:
Success(Unit)
编辑1:如接受的答案和评论中所述,我使用val result: Try[Unit] =
Try {
//some code that may generate exceptions
Success(Unit)
}
的方式是错误的。 Try
将结果包装在Try
和Success
中的例外中,因此返回Failure
毫无意义,我们必须直接返回结果。在此特定情况下,返回Success
,如下所示:
()
答案 0 :(得分:2)
将其键入scala> import scala.util._
import scala.util._
scala> val a: Try[Unit] = Try { 2 + 2 }
a: scala.util.Try[Unit] = Success(())
scala> a.toOption // check that there's really nothing in the returned value
res0: Option[Unit] = Some(())
scala> val b = Try { 2 + 2 }
b: scala.util.Try[Int] = Success(4)
似乎是要走的路,这是repl必须展示的内容:
Try
请注意另外两件事:
Unit
的方式是错误的,我会在下面提供一个正确的示例。val result: Try[Unit] =
Try {
//some code that may generate exceptions
() // this is how you "return" unit
}
伴侣对象,请参阅下面的正确方法:...
{{1}}