4

Visual Studio 内で WCF サービスを実行すると、デバッグ出力に大量の例外が表示されます。

A first chance exception of type 'System.ServiceModel.FaultException' occurred in System.ServiceModel.dll
A first chance exception of type 'System.InvalidOperationException' occurred in System.ServiceModel.Channels.dll

それらは不規則に投げられるようです: いずれにせよ、私はどのようなパターン (つまり、数秒ごとから数十秒まで) も特定できませんでした。

debug を break on に設定するとFaultException、 によってスローされていることがわかりSystem.ServiceModel.Dispatcher.ErrorBehavior.ThrowAndCatch(Exception e, Message message)ます。

例外メッセージは{"The message with To '' cannot be processed at the receiver, due to an AddressFilter mismatch at the EndpointDispatcher. Check that the sender and receiver's EndpointAddresses agree."}.

明らかな答えは、「まあ、あなたのアドレスは空です」と思われるでしょう。ただし、これはクライアントが接続する前に発生します。

これは単なる「正常」ですか、それとも私が間違っていることの兆候ですか?

4

3 に答える 3

4

簡単な答えは「はい、最初のチャンスの例外を無視できます」です。それらは、実際には既に処理された例外です。したがって、これらは通常の実行ワークフローと見なす必要があります。

Visual Studio は、例外が処理された場合でも、例外が発生するたびに開発者に通知します。各例外は、通常のデバッグ セッションを中断しない「最初のチャンスの例外」をスローします。このファースト チャンス例外が処理されない場合、デバッグ セッションは「セカンド チャンス例外」によって中断されます。「最初のチャンスの例外」の値は、開発者の洞察力の知識のためだけです。

このブログ投稿では、最初のチャンスの例外に関する詳細を確認できます。参考記事からのコピペ:

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

私が助けてくれることを願っています!

于 2014-01-16T12:27:58.723 に答える
0

フレームワークからスローされた最初の例外はすべて安全に無視できることに同意します。例外が飲み込まれた (そして「処理」されなかった) 場合、本番環境のコードベースで隠された/複製が非常に困難なバグをキャッチすることが有用であることがわかりました。別のログ ファイルに記録され、QA 環境でのみ有効になる FirstChance 例外のハンドラーをアタッチすることで (これらのログは巨大です)、独自のコードベースでいくつかのバグを見つけるのに役立ちました。開発者は一日の終わりにログ ファイルを見て、安全に無視してはならないものを探します。

この種のバグは、誰かが例外を飲み込むことに決めていなければ、そもそもコードに含まれていなかったはずですが、乱雑な現実の世界では、これはコードベースの品質を継続的に改善するための優れたツールです。

于 2014-01-16T14:30:07.087 に答える