在scala中映射
失败未来的
例外
的最干净的方法是什么?
说我有:
import scala.concurrent._
import scala.concurrent.ExecutionContext.Implicits.global
val f = Future {
if(math.random < 0.5) 1 else throw new Exception("Oh no")
}
如果未来以1
成功,我想保留它,但是如果它失败了,我想将异常
更改为其他异常
。
我能想出的最好的是转换,但是这需要我为成功案例做一个不必要的函数:
val f2 = f.transform(s => s, cause => new Exception("Something went wrong", cause))
有什么原因没有< code > mapFailure(partial function[Throwable,Throwable])?
您可以尝试恢复与
如下所示:
f recoverWith{
case ex:Exception => Future.failed(new Exception("foo", ex))
}
还有:
f recover { case cause => throw new Exception("Something went wrong", cause) }
从Scala 2.12开始你可以做:
f transform {
case s @ Success(_) => s
case Failure(cause) => Failure(new Exception("Something went wrong", cause))
}
或
f transform { _.transform(Success(_), cause => Failure(new Exception("Something went wrong", cause)))}
我刚开始冬眠,尝试一些应该很容易的事情,但我无法让它工作。 有两个表,一个人和一个地址。一个人可以有一个或多个地址,即:一个OneTo多映射。当我试图向两个不同的人添加相同的地址时,我会遇到异常。这几乎就像Unique在连接表的foriegn_key上被强制执行一样。 我的源代码: 人 地址 主要 代码在保存Person对象Harry时崩溃。这是因为在个人地址表中,引用“1”的地址已经存在并分配给
我在Spring启动时使用推土机映射器。如果我将数据从实体映射到EntityDTO,那么dozer maper的工作就是将数据从实体类复制到EntityDTO,对于原语也是如此。但是假设我有这样一门课 和名称为EntityDTO的DTO 那么它不会将数据从entityChild映射到EntityChildTos,有人能帮我解决这个问题吗?
在Scala中,未来可能会失败,这可以异步发现: 你将如何“翻译”成Clojure?我的阅读让我相信Clojure未来/promise模型没有Scala的强大,你不能就这样抓住失败。那么该怎么办呢? Scala的未来永远不需要被问到它的价值——当它好并准备好时,它会告诉你发生了什么(包括它是否失败——这是这个问题的关键)。这就是我所说的“异步”的意思。Scala的未来可以处于三种可能的状态之一——
前端将这个json发送到我的API 控制器:
我使用一个VanillaChroncile临时存储和检索条目,除了有巨大的负载外,它工作得非常好。我得到地图失败异常。虽然我有处理此异常的恢复逻辑,但我想知道为什么首先会出现此异常。任何帮助都将不胜感激。 }
我在映射时遇到一个问题: 马达。Java 查询“from motor”是一个classname。但它仍然不起作用。如何按id vnopol查询?