1. ホーム
  2. c++

[解決済み] C++のcatchブロック - 値または参照で例外をキャッチ?重複

2022-11-03 11:12:56

質問

重複の可能性があります。

C++でポインタによる例外をキャッチする

私はいつも値で例外をキャッチしています。

try{
...
}
catch(CustomException e){
...
}

しかし、私はいくつかのコードで、代わりに catch(CustomException &e) になっているコードに出会いました。これは a)fine b)wrong c)a grey area?

どのように解決するのですか?

C++における例外処理の標準的な方法は...

値で投げる、参照で捕らえる

値によるキャッチは、継承階層に直面した場合に問題があります。 あなたの例では、別の型である MyException から継承された CustomException を継承し、エラーコードのような項目を上書きします。 もし MyException 型がスローされた場合、キャッチブロックはそれを CustomException インスタンスに変換され、エラーコードが変更されます。