我正在编写一个基于Quickfix/N的 FIX 引擎,它侦听交易执行 (ExecutionReport) 并将它们保存到数据库中。
如果接收到的消息中不存在该值,则从 API 请求字段值会引发 FieldNotFoundException。例如,如果帐户不存在,调用 executionReport.Account 将引发异常。
由于某些字段是可选的,因此我必须在获取字段值之前明确检查字段值是否存在。我有两种可能性:
可能性一:
executionReport.IsSetAccount() ? executionReport.Account : null;
可能性2:
try
{
return executionReport.Account.getValue();
}
catch (Exception e)
{
return null;
}
第一个选项很干净,但我觉得它真的很重,第二个可以概括为辅助函数,但它违背了 API 理念,我觉得我做错了什么。
那么我的问题是:
- 还有另一种干净/正确的方法来完成这项工作吗?
还是我对协议/API 的理解完全错误?我觉得我没有以正确的方式解决问题。
非常感谢