我正在编写一个概念证明,其中有一个简单的要求,我加载一个帐户,进行 Web 服务调用以启动付款,如果成功则更新帐户余额。
以下代码的目的是确保在 Web 服务调用成功从客户的银行中取款但由于并发问题而无法保存帐户的情况下完成一些逆转。但是,我有一个奇怪的问题,即使响应成功,catch 块中的 if 测试返回 false 并重新抛出异常?
编辑开始:
如果response.IsSuccessful
是true
并且ConcurrencyException
发生accountService.Save(account)
在行,不currentStatus
应该等于WEBSERVICE_SUCCESSFUL吗?
编辑结束:
这是一个 Web 应用程序,对Process()的调用由前端触发。我错过了什么明显的东西吗?任何帮助将非常感激。
function void Process(Account account, string param1, decimal param2) {
string currentStatus = "START";
try
{
log("Begin web service call");
var response = webservice.Call(param, param2);
log("End web service call");
if(response.IsSuccessful)
{
currentStatus = "WEBSERVICE_SUCCESSFUL";
//update account balance
accountService.Save(account);
}
else
{
// do something else
}
}
catch (ConcurrencyException ex)
{
log("Error concurrency..");
if( currentStatus == "WEBSERVICE_SUCCESSFUL")
//do reversal
else
throw ex;
}
}