C++の例外について?
给我你的怀抱
给我你的怀抱 2017-06-30 09:57:21
0
3
1154
  1. 通常のデバッグによって生成される例外 (図に示すように) と、ユーザー入力が正しいかどうかを人為的に判断しようとする try throw 例外の間に本質的な違いはありますか? C について話すときのメカニズムには前者が含まれますか? それとも単に後者のことを指しますか?

上記の最初の例外は何によって判断されますか?たとえば、図の accedd 違反は、コンパイラまたは IDE の他のツールによって判断されますか?

给我你的怀抱
给我你的怀抱

全員に返信(3)
phpcn_u1582

@Evian おっしゃることはもっともです、補足させてください

  • C++ の例外は、C++ によってスローされた例外のみをキャッチできます。簡単に言うと、それ自体によってスローされた例外のみをキャッチできます (作成したコードに限らず、ランタイム ライブラリも同様)。

  • 実際、C++ によってスローされる例外は、単に定義され、予測可能なものであるため、実際の例外ではありません。実際の例外は、実行後に CPU によってのみトリガーされます。つまり、ハードウェアによってスローされた例外です。

  • ハードウェアは C++ を直接考慮せず、その処理はオペレーティング システムに任せられます。オペレーティング システムが異なると、例外処理にも一貫性がありませんが、例外処理は上位レベルの言語に渡されません。

  • 比較的完全な Windows 例外処理を例に挙げると、次のようになります

  1. デバッガに任せる(プロセスをデバッグする必要がある)

  2. VEHを実行

  3. SEHを実行

  4. TopLevelEH (プロセスはデバッグ時に実行されません)

  5. デバッガに任せる(上記の例外処理では処理できないとのことでしたので、再度デバッガに渡しました)

  6. 呼び出し例外ポート通知 csrss.exe

いいねを押す +0
曾经蜡笔没有小新

メモリ読み取り違反はハードウェアによって判断され、処理のためにオペレーティング システムに渡されます。 (C++ についてはあまり詳しくありませんが、これは C++ の例外のようなものではなく、Windows によってスローされる例外です。)

いいねを押す +0
刘奇

あなたの言いたいことは理解できませんでした。一部のライブラリには例外クラスが組み込まれていますが、結局のところ、それらはすべて std::exception から継承しています。また、これは実行時例外であり、コンパイラや IDE とは関係ありません。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート