C++で書かれたいくつかの機能のC APIを開発しており、エクスポートされたC関数から例外が伝播しないようにしたいと考えています。例外処理でのコード再利用
それを行うための簡単な方法は、それぞれのエクスポートされた関数が中に含まれていることを確認作っている:
try {
// Do the actual code
} catch (...) {
return ERROR_UNHANDLED_EXCEPTION;
}
はのは、私はしばしばC++コード内で逃している唯一の例外は、STDである知っているとしましょう:: bad_allocと私がしたいですそれを処理するために特別に私の代わりにこのような何かを書きたい:
try {
// Run the actual code
} catch (std::bad_alloc& e) {
return ERROR_BAD_ALLOC;
} catch (...) {
return ERROR_UNHANDLED_EXCEPTION;
}
は私が世界的に周りの例外ハンドラのための新たなcatchステートメントを追加することなく、異なるいくつかのエラーを処理することができるようにいくつかの巧妙な方法でこれを分解することが可能ですすべてのエクスポートされた関数?
これはプリプロセッサを使って解決することが可能ですが、その道を行く前に、私はそれを行う方法が他にないことを確認したいと思います。
+1:良いアイデア:-) –
完全に作業しました。ありがとう! – Laserallan
実際のコードでは、例外によって例外をキャッチすることを忘れないでください:catch(std :: bad_alloc&) – Jem