我使用objectify作为GAE数据存储区的接口,我想知道如何检测事务何时失败。也就是说,当你打电话
ofy().transact(new VoidWork() {
public void vrun() {
//save entity, this may throw - concurrent modification exception
}
});
如果抛出异常,则再次调用vrun()方法。我想在发生这种情况时记录。我尝试了很多东西 - 用try / catch包含vrun()的内容,传递对布尔标志的引用等等。但这似乎不起作用。我可能会出错的任何想法?
我需要能够以编程方式检测事务是否失败,并在重新尝试之前执行一些代码。
答案 0 :(得分:0)
使用限制尝试次数的transactNew()
重载:
ofy().transactNew(1, new VoidWork() {
...
});
这将让您自己管理重试。请注意,在v5.1.6之前,#被错误地用作重试次数(不是尝试次数)。在v5.1.6中,已更正行为以匹配文档。这是尝试的次数。