gpt4 book ai didi

exception - QuickFix 可选字段检查值是否存在

转载 作者:行者123 更新时间:2023-12-04 03:03:39 24 4
gpt4 key购买 nike

我正在编写基于 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 理念,我觉得我做错了什么。

那么我的问题是:
  • 还有另一种干净/正确的方法来完成这项工作吗?
  • 还是我对协议(protocol)/API 的理解完全错误?
    我觉得我没有以正确的方式解决问题。

    非常感谢
  • 最佳答案

    您还没有真正说明为什么您认为这些不干净,所以我不确定您到底在寻找什么。

    我能想到的唯一选择是:

    // Both these lines are functionally identical.
    executionReport.IsSetField(1)
    executionReport.IsSetField(QuickFix.Fields.Tags.Account)

    // 1 is the tag for Account.
    // The second line just uses the tag enum to get 1
    // instead of hardcoding the int.

    那个更好吗?

    关于exception - QuickFix 可选字段检查值是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46694557/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com