「最初のチャンスの例外」とは何ですか?


回答:


78

これはデバッグの概念です。基本的に、例外は最初にデバッガにスローされ、次に実際のプログラムにスローされます。処理されない場合、2目にデバッガにスローされ、アプリケーション自体の前後にIDEで何かを行う機会が与えられます。これは、Microsoft Visual Studioの発明のようです。


21
これはデバッグの概念以上のものです。C#は、実行時に2パス例外処理を監視する便利な手段を提供していませんが、vb.netは提供しています。基本的に、例外がスローされると、ランタイムはコールスタックを検索して、誰かがキャッチするかどうかを確認することから始まります。このプロセスは、ブロックが実行される前に行われfinallyます。システムが誰が例外をキャッチするかを決定し、誰かが実際に例外を発生させると判断すると、システムはスタックの巻き戻しを開始します。例外がfinallyブロックからスローされた場合に注意してください...
supercat

18
...元の例外をキャッチすることを期待していたコードは、そうしない場合があります。多くの奇妙なコーナーケースがあります。
スーパーキャット2013

5
これは、(処理されない例外だけでなく)スローされたすべての例外でブレークするようにデバッガーを構成した場合、またはスローするステートメントに「ステップイン」した場合に発生します。あなたは、メッセージが表示タイプ「foo」での最初のチャンス例外がYourApp.exeで発生しました。続行(F5)またはさらに先へ(F11)できます。次にcatch、これに対するaがある場合、制御はそこに行きます。catchブロックがない場合は、「セカンドチャンス」ブレークが発生します。今回のメッセージは、タイプ 'foo'の未処理の例外がYourApp.exeで発生しました。ここから、続行またはさらに進んでみようとしても成功しません。
Jeppe Stig Nielsen、2015

@supercat:上記のコメントで述べたように、詳細を知るにはどうすればよいですか?それは自己実験の結果ですか?本を読んでいますか?それは非常に印象的な洞察です!あなたがこれに答えるために少し時間をとっていただければ幸いです...
anish

2
@NoSaidTheCompiler:さまざまなブログで例外処理について読みました。「exception filter .net」を検索すると、この件に関していくつかのブログが表示されると思います。
スーパーキャット2015年


4

私はデバッガを使い始めて、これに遭遇しました。私の調査では、MSDNブログの投稿「First Chance Exceptionとは何ですか?」それは私のためにそれを片付けました。

私のブログ投稿からの重要なポイントは、それがデバッガーへの通知に言及していることであり、私のコードが必ずしも処理する必要があるものではないことであり、最も重要なのは、「最初のチャンスの例外メッセージは、ほとんどの場合、問題が発生していることを意味しないコード。"


そのリンクからあなたが役に立ったと思ったものの抜粋(記事全体ではない)を入れてください。削除された同じリンクで以前のリンクのみの回答がありました。
マークホール

私にとって重要なことは、それはデバッガーへの通知を指し、コードが必ずしも処理する必要のあるものではないこと、そして最も重要なこととして、「最初のチャンスの例外メッセージは、ほとんどの場合、コードに問題があることを意味しない」ということです。
codeatty 2014

私はあなたの答えにあなたのコメントを追加しました、私はリンクが周りを維持するのに十分重要であると感じています、私はそれが与えられた前回のようにリンクのみの答えとは見なされないことを確認しようとしています。
マークホール

0

アプリケーションのデバッグ中は、例外が発生するたびにデバッガーに通知されます。この時点で、アプリケーションは一時停止され、デバッガーが例外の処理方法を決定します。このメカニズムの最初のパスは、「最初のチャンス」の例外と呼ばれます。

デバッガーの構成に応じて、アプリケーションを再開して例外を渡すか、アプリケーションを中断したままデバッグモードに入ります。アプリケーションが例外を処理する場合、アプリケーションは通常どおり実行を続けます。

ファーストチャンスの例外メッセージは、ほとんどの場合、コードに問題があることを意味しません。例外を適切に処理するアプリケーション/コンポーネントの場合、最初の例外メッセージにより、例外的な状況が発生して処理されたことを開発者に知らせます。


0

開発者の観点からは、コードで処理されなかったことを意味するため、セカンドチャンスの例外がより重要です。したがって、アプリケーションが停止します。

最初のチャンスはそれらの多くである可能性がありますが、アプリケーションのクラッシュにつながるので、開発の観点から、さらに懸念するのは2番目のチャンスです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.