成功的任何有用的价值

时间:2017-10-30 22:44:41

标签: scala

我有一些代码可能会产生异常(如果有的话),如果成功运行则不返回任何内容。

我的问题是:有没有最好的办法处理此类案件?

实际上,我正在使用返回Try[Unit]Failure(exception)的{​​{1}},但我想知道这是否正确?如果有最好的做法?或者在这种情况下使用更好的方法?

以下是我的代码概述:

Success(Unit)

编辑1:如接受的答案和评论中所述,我使用val result: Try[Unit] = Try { //some code that may generate exceptions Success(Unit) } 的方式是错误的。 Try将结果包装在TrySuccess中的例外中,因此返回Failure毫无意义,我们必须直接返回结果。在此特定情况下,返回Success,如下所示:

()

1 个答案:

答案 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

请注意另外两件事:

  1. 如您对问题的评论中所述,您在代码中使用Unit的方式是错误的,我会在下面提供一个正确的示例。
  2. 你也可以返回Unit,但你做的方式也是错误的,你实际返回的是val result: Try[Unit] = Try { //some code that may generate exceptions () // this is how you "return" unit } 伴侣对象,请参阅下面的正确方法:
  3. ...

    {{1}}