Quickfix/Nに基づいてFIXエンジンを書き、トランザクションの実行(ExecutionReport)をリッスンしてデータベースに保存しています。QuickFixのオプションフィールドのチェック値があります
値が受信したメッセージに存在しない場合、APIからフィールド値を要求するとFieldNotFoundExceptionがスローされます。例では、アカウントが存在しない場合、executionReport.Accountを呼び出すと例外がスローされます。
一部のフィールドはオプションであるため、取得する前に明示的にフィールド値の有無をチェックする必要があります。 私はそのための二つの可能性ている:
可能性1: executionReport.IsSetAccount() ? executionReport.Account : null;
可能性2:最初のオプションがきれい
try
{
return executionReport.Account.getValue();
}
catch (Exception e)
{
return null;
}
ですが、私はそれは本当に重い見つけ、第二のに一般化することができますAPIの哲学に反して、私は何かが間違っていると感じています。
その後、私の質問は:
- は、仕事をする別のきれいな/正しい方法はありますか?
また、私のプロトコル/ APIについての私の理解は間違っていますか? 私は正しい方法で問題を起こさないと感じています。
どうもありがとう
私はあなたが問題があると思う - 一部のフィールドはオプションです。これはFIXプロトコルの機能です。ほぼすべてのFIXメッセージで同じです。取引のさまざまな方法があります... – rupweb