在拍卖示例中,我看到了ctx.commandFailed(...)
和throw SomeException(...)
。是否有充分的理由抛出而不是使用 API,两者之间有区别吗?
问问题
114 次
1 回答
1
持久实体命令处理程序和持久回调被包装在try/catch
块中之后,如果捕获到异常,它将将该异常传递ctx.commandFailed(...)
给您。
两者之间存在细微差别需要注意。如果抛出异常,命令的处理当然会立即停止。但是,如果您将异常传递给ctx.commandFailed(...)
,则会将异常发送回命令的调用者,但它不会停止处理。理论上你可以继续返回一些指令来持久化事件——这将是一件奇怪的事情。在实践中,您需要做的是ctx.done
在调用ctx.commandFailed(...)
.
一般来说,简单地抛出异常可能更简单、更安全。
于 2017-02-06T22:38:41.553 回答