製品のプラグイン システムのインターフェイスを設計しています。現在のプラグインは C# で記述されますが、将来的には少なくとも C/C++ ラッパーを作成することを想定しています。
潜在的な言語の不一致を考慮して、エラーを処理する方法に困惑しています。通常、私はエラーに対して例外を使用しますが、言語間の例外メカニズムの違いにより、これは簡単ではなく、例外をサポートしていない言語もあると思います。
これが当てはまる場合、私が見ることができる唯一の他のパターンは次のとおりです。
A) すべての関数からエラー コードを返します。これにより、事前定義されたエラーのみが許可されます。アドホック/不明なエラーに関する情報はありません。
B) すべての関数から bool を返し、GetLastError() タイプの関数を提供します。スレッドの問題が発生する可能性があるため、私はこれに熱心ではありません (別のスレッドがエラーを読み取る前に変更します)。
C) すべての関数から bool を返し、プラグインが問題を記録するために使用できる LogError() 関数を API に提供させる。呼び出し時に特定のエラーにプログラムで反応するのが難しいため、これには熱心ではありません。
D) 入力可能なすべての関数呼び出しにエラー情報オブジェクトを渡します。
クロスランゲージ API 向けに進化したベスト プラクティスはありますか?