はのは、いくつかの人工的なC++のコードを考えてみましょうtry`支店:C++成功 `
int i = 0;
try { someAction(); }
catch(SomeException &e) { i = -1; }
i = 1;
... // code that uses i
が、私はこのコードがsomeAction()
の場合にi
に-1
を割り当てる例外をスローし、例外がなかった場合場合に1
を割り当てます。今度はi
がいつもいつも1
になるので、このコードは間違っています。何のいずれかが、tryブロックでスローがあった場合、私は場合にはいくつかのアクションもしない「成功したトライのブランチ」、のようなものがCであり++:
int i = 0;
bool throwed = false;
try { someAction(); }
catch(SomeException &e) { throwed = true; }
i = throwed ? -1 : 1;
... // code that uses i
私の質問は:確かに、私たちはのようないくつかのトリックの回避策を行うことができますか?以下のような 何か:確かに
int i = 0;
try { someAction(); }
catch(SomeException &e) { i = -1; }
nocatch { i = 1; }
... // code that uses i
は、Cにはnocatch
ありません++多分いくつかの一般的な美しい回避策はありますか?
「ノッチ」は「試行」と呼ばれます。 – molbdnilo
tryブロックまたはcatchブロック内に複数行のコードを記述することができます。 – AndyG
「i」を「1」に初期化する方法もあります。それは最も簡単です。別の方法は、コードを関数(例えばラムダ)に入れて、 'i'値を返すことです。 –