1. ホーム
  2. c++

[解決済み] なぜ例外をreference-to-constとしてキャッチするのですか?

2023-02-15 10:24:10

質問

例外は参照としてではなく、reference-to-constとして捕捉するのが良いと何度も聞いたり読んだりしています。なぜでしょうか。

try {
    // stuff
} catch (const std::exception& e) {
    // stuff
}

よりも良い。

try {
    // stuff
} catch (std::exception& e) {
    // stuff
}

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

必要です。

  • 例外にポリモーフィックにアクセスできるようにするための参照
  • パフォーマンスを向上させ、オブジェクトを変更しないことをコンパイラに伝えるための const です。

後者は だけ 前者ほど重要ではありませんが、const を落とす唯一の本当の理由は、例外に変更を加えたいことを知らせることでしょう (通常は、より高いレベルにコンテキストを追加して再スローしたい場合にのみ有用です)。