-1

C++ 例外は「どこからともなく」発生する可能性がありますか? 文字通りではありません。関数の明示的な呼び出しではない場所から C++ ランタイムが例外をスローできる、明白でない特別なケースを知っている人はいますか?

プラットフォーム固有の経験と、標準から逸脱した実装に関する情報も興味深いものです。

以下に関する回答は投稿しないでください。

  1. 関数呼び出しを隠すマクロプロセッサのトリック。
  2. デフォルトのコンストラクター。
  3. デストラクタ;
  4. オーバーロードされた演算子。
  5. 過負荷の変換;
  6. オーバーロードされていない演算子newnew[];

MSVC には、ハードウェア例外 (GPF、ゼロ除算など) を C++ 例外として処理できるオプションが用意されています。これが他のプラットフォームでどのように処理されているかについて誰かコメントできますか、または誰かがこれについて述べている標準の適切な場所を知っていますか?

この質問に反対票を投じた人へ: 勇気を出して、ここで何が間違っているかを伝えてください。

4

1 に答える 1

3

いいえ、いいえ、ありません。MSVC オプションのみです。Windows だけがハードウェア エラーを例外のように扱います。これらの構造化された例外は、要求された場合にのみ C++ 例外に変換されます。他のプラットフォームはシグナルを使用します。

例外はどこからともなく出てくるわけではありません。それらは、あなた、または標準ライブラリの明確に定義された場所 (および のような言語のカップルdynamic_cast) がそれらをスローしたときに発生します。C++ ランタイムは、lolsie に対してそれらをスローしません。不明なソースの例外がある場合は、より優れたデバッガーを入手し、不明なソースがなくなるまで使用方法を学習してください。

于 2012-10-17T03:27:49.573 に答える