0

私はサービスからクライアントへのいくつかの例外を使用することを考えています。

この場合、例えば考えています。クライアントはデータベースにレジスタを挿入しようとします。このレジスタには、データベースに存在するe filedの値があり、savechangesを実行すると、updateExceptionが発生します。

例外(faultException)を使用してクライアントにエラーを警告し、カスタムクラスを使用してレジスタの実際のデータをクライアントに送信することを考えています。このようにして、クライアントはレジスタに対して他のクエリを実行しません。

ただし、このリンクでは、例外は開発でのみ使用され、本番環境では使用されないようになっているので、例外なしで、どうすればやりたいことを実行できますか?

おそらく、エンティティのタイプごとに1つのlistプロパティを持つカスタムクラスと、操作が正しいか間違っているかを示すプロパティbool、エラーのタイプを示す任意のコードを持つ他のプロパティを使用できます...など。これは良い選択肢ですか?

要約すると、本番環境での例外を回避する方が本当に良いのでしょうか。サービスからクライアントエラーにどのように通信できますか?

4

1 に答える 1

1

2つのオプションがあります:

  • 例外をスローし、WCFフォールトを返します
  • エラー情報を添付してオブジェクトを返します

私は個人的に、例外をスローしてWCF障害を返すことを好みます。エラー情報をオブジェクトを返すために添付するというアイデアは好きではありません。オブジェクト指向のプリンシパルに違反しているように感じます。たとえば、「ErrorCode」というフィールドは「CustomerAddress」オブジェクトには配置されません。

例外的な状況が発生した場合は、例外をスローする必要があると思います。これにより、エラー情報をreturnオブジェクトに添付するために、すべてをtry catchブロックでラップする必要がなくなるため、コードも簡素化されます。ただし、予期しない例外をキャッチしてから、より有用なメッセージを含むより適切な例外をスローすることもできます。

于 2012-05-10T23:37:58.457 に答える