サービスでは、FaultException クラスを使用して、デバッグ用にクライアントに返す型指定のないエラーを作成します。
クライアントでは、FaultException オブジェクトをキャッチして、IncludeExceptionDetailInFaults プロパティを true に設定してサービスから返された不明なエラーや一般的なエラーを処理します。FaultException は CommunicationException を拡張するため、別々にキャッチする場合は、CommunicationException オブジェクトをキャッチする前に FaultException オブジェクトをキャッチしてください。
メモ : |
|---|
| 双方向サービスでも、双方向クライアントとの対話で返される FaultException オブジェクトをキャッチできます。 |
通常は、FaultContractAttribute を使用して、クライアントにエラー情報が必要であると判断されるすべてのエラー ケースに対して (マネージ例外オブジェクトではなく) 厳密に型指定された SOAP エラーを返すサービスを設計することを強くお勧めします。ただし、次の状況の場合は、FaultException を使用します。
文字列をコンストラクタに渡し、クライアントが FaultException.ToString メソッドを呼び出すことでその文字列を取得する場合は、FaultException オブジェクトをスローします。型パラメータが System.String である System.ServiceModel.FaultException 型のエラー コントラクトを指定した場合、文字列値は FaultException.ToString を呼び出さなくても FaultException.Detail プロパティとして取得できます。
詳細については、「Windows Communication Foundation コントラクトでのエラー処理」を参照してください。