0
例外がcatchブロックの後でも利用可能な状況に遭遇したようです。私が遭遇する状況では100%再現可能ですが、このシナリオを正確に再現するテストはできません。捕獲された後でスタックに例外が残っています
デバッグ状況のため、この画像を参照してください:次のように
状況は次のとおりです。
- 非同期タスクが待っ実行されます。
- タスクがフォールト状態に設定されており、例外がスローされます。
- コードは、例外ブロックを処理するキャッチブロックを通過します。 < - 期待どおり
- 例外は、キャッチブロックの終了後にスタックからクリアされません。 < - 期待通りではない
最終結果:catchブロックの後に続くすべてのコードでMarshall.GetExceptionCode()!= 0。
ここで何が起こっているのか誰でも考えられますか?
デバッグモードになっている場合は例外が表示されます.. – BugFinder
あなたが記述しているのは内部的には未定義の動作であり、仕様によって定義されている保証はありません。あなたは実際にあなたが解決する必要がある特定の問題を抱えていますか? – Luaan
これは、C#コンパイラがasync/awaitを使用するメソッドを書き換える*方法の副作用です。デバッガのコンテキストは、オリジナルのものではなく、書き直されたメソッドです。生成されたコードをildasm.exeで見て、この書き換えロジックの詳細を調べてください。 –