2016-05-06 1 views
3

SocketExceptionに関する奇妙な問題に直面しています。添付のスクリーンショットで詳しく説明しています。スローされた例外がキャッチブロックCと正しく一致しない理由C#

enter image description here

  1. SocketExceptionがスローされた例外とは、再びのSocketExceptionでキャッチすることを意図している間に最初のcatchブロックは、例外をキャッチされていないのはなぜ。

  2. なぜ制御が例外をキャッチするための第2のキャッチブロックに行くのですか?

[編集]:try-catchは明らかにそのように動作しませんデバッグモードでスクリーンショットを追加すぎ

enter image description here

+6

奇妙なことに、なぜあなたはリリースモードでデバッグしていますか? – user1666620

+0

@CharlesMager例外を再現すると、同じ試行の次のキャッチブロックではなく、より高いレベルでキャッチされるという印象を受けました。 – user1666620

+0

@ user1666620もちろん、あなたは正しいです - 申し訳ありませんが、私はあなたのブレークポイントがどこにあるのか分かりませんでした! –

答えて

1

実行はが第二のcatchブロックに入っていないが、例外がスローされます呼び出しスタックを更新すると、次のcatch句は無視されます。

あなたはIDEは、おそらく重要なデバッグ情報が不足しているため、誤って二catch句を入力するときに実行が停止表示されるようお勧めできませんリリースモードでデバッグしているので、それは単にそのように見えます。

実行が何らかの形で2番目のcatch句になった場合、その時点で停止することは実際には意味がないことに注意してください。throw文で停止することになります。

実際に何が起こっているかは、最初のthrowで実行が停止していて、IDEが正しく表示していないということです。

ストーリーの道徳的; リリースモードでデバッグしないでください。 VS2015を実行している場合、実際にはリリースモードのデバッグエクスペリエンスはサブパールになります(この警告が以前のバージョンで表示されたかどうかはわかりません)。

UPDATE:それはまだデバッグモードで起こるように問題がリリースモードでのデバッグに関連していないようです。それでも、デバッグはリリースモードで実行しないでください。私は解決策を洗い流すと、それが問題を解決するかどうかを調べるでしょう。それが汗をかくことがないのであれば、コードは正しく動作しています。IDEが正しく実行されていない箇所が正しく表示されているわけではありません。

+0

デバッグモードでも同じことが起こります。 – 107

+0

@ Praveen107あなたの解決策をクリーンアップすると、IDEは間違った位置を表示していますが、コードは正しく動作しています。 – InBetween

+0

@ Praveen107また、私は* Debug *ビルドの設定を編集していないことを理解していますか? – InBetween

関連する問題