ファーストチャンスの例外とは正確には何ですか?.NETプログラムでどのように、どこで発生しますか?そしてなぜそれがその独特の名前で呼ばれているのですか(私たちが話している「チャンス」とは)
ファーストチャンスの例外とは正確には何ですか?.NETプログラムでどのように、どこで発生しますか?そしてなぜそれがその独特の名前で呼ばれているのですか(私たちが話している「チャンス」とは)
回答:
これはデバッグの概念です。基本的に、例外は最初にデバッガにスローされ、次に実際のプログラムにスローされます。処理されない場合、2回目にデバッガにスローされ、アプリケーション自体の前後にIDEで何かを行う機会が与えられます。これは、Microsoft Visual Studioの発明のようです。
catch
、これに対するaがある場合、制御はそこに行きます。catch
ブロックがない場合は、「セカンドチャンス」ブレークが発生します。今回のメッセージは、タイプ 'foo'の未処理の例外がYourApp.exeで発生しました。ここから、続行またはさらに進んでみようとしても成功しません。
私はデバッガを使い始めて、これに遭遇しました。私の調査では、MSDNブログの投稿「First Chance Exceptionとは何ですか?」それは私のためにそれを片付けました。
私のブログ投稿からの重要なポイントは、それがデバッガーへの通知に言及していることであり、私のコードが必ずしも処理する必要があるものではないことであり、最も重要なのは、「最初のチャンスの例外メッセージは、ほとんどの場合、問題が発生していることを意味しないコード。"
アプリケーションのデバッグ中は、例外が発生するたびにデバッガーに通知されます。この時点で、アプリケーションは一時停止され、デバッガーが例外の処理方法を決定します。このメカニズムの最初のパスは、「最初のチャンス」の例外と呼ばれます。
デバッガーの構成に応じて、アプリケーションを再開して例外を渡すか、アプリケーションを中断したままデバッグモードに入ります。アプリケーションが例外を処理する場合、アプリケーションは通常どおり実行を続けます。
ファーストチャンスの例外メッセージは、ほとんどの場合、コードに問題があることを意味しません。例外を適切に処理するアプリケーション/コンポーネントの場合、最初の例外メッセージにより、例外的な状況が発生して処理されたことを開発者に知らせます。
開発者の観点からは、コードで処理されなかったことを意味するため、セカンドチャンスの例外がより重要です。したがって、アプリケーションが停止します。
最初のチャンスはそれらの多くである可能性がありますが、アプリケーションのクラッシュにつながるので、開発の観点から、さらに懸念するのは2番目のチャンスです。
finally
ます。システムが誰が例外をキャッチするかを決定し、誰かが実際に例外を発生させると判断すると、システムはスタックの巻き戻しを開始します。例外がfinally
ブロックからスローされた場合に注意してください...