0

SetLastError()WINAPIと C++ キーワードの違いは何throwですか? たとえば、SetLastError(5);throw 5;は同じですか?

4

2 に答える 2

8

SetLastError は、単純なグローバル変数を設定します。プログラムの流れには何もしません。

throw は、実行中のプログラムの流れを停止し、try - catch 句でキャッチされるまでスタックを巻き戻します。プログラム フローは、catch の最後から続行されます。

例外の概念について説明しているこの記事を読むことをお勧めします。そして、C++ の例外について読んでください。

  • また、5 をスローしないでください。できれば std::exception によって継承される非組み込みオブジェクトをスローしてください。オブジェクトには、catch 句にエラーの処理方法を指示する状態を含めることができます。
于 2010-04-29T14:24:37.573 に答える
4

throwcatchブロックによってキャッチされ、C++ 言語の一部で ある例外をスローします。SetLastError()によって返される値を変更する、Microsoft による Windows 固有の API の一部ですGetLastError()。つまり、全然違う!例外をスローすると、スタックが巻き戻され (すべてのローカル変数のデストラクタが呼び出されます)、プログラムの実行が適切な catch ブロックに移動します。 SetLastError()そのようなことは何もしません。これは単なる API 関数です。

于 2010-04-29T14:18:09.273 に答える