次の方法で共有


FaultException クラス

定義

SOAP エラーを表します。

public ref class FaultException : System::ServiceModel::CommunicationException
public class FaultException : System.ServiceModel.CommunicationException
[System.Serializable]
public class FaultException : System.ServiceModel.CommunicationException
[System.Serializable]
[System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultCodeData[]))]
[System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultReasonData[]))]
[System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultCodeData))]
[System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultReasonData))]
public class FaultException : System.ServiceModel.CommunicationException
type FaultException = class
    inherit CommunicationException
[<System.Serializable>]
type FaultException = class
    inherit CommunicationException
[<System.Serializable>]
[<System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultCodeData[]))>]
[<System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultReasonData[]))>]
[<System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultCodeData))>]
[<System.Runtime.Serialization.KnownType(typeof(System.ServiceModel.FaultException+FaultReasonData))>]
type FaultException = class
    inherit CommunicationException
Public Class FaultException
Inherits CommunicationException
継承
継承
派生
属性

次のコード例は、サービスからスローされた FaultException オブジェクトをキャッチして処理する try/catch ブロックの使用方法を示しています。 これは、サービス アプリケーションでデバッグがオンの場合にしばしば使用される方法です。

using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
using Microsoft.WCF.Documentation;

public class Client
{
  public static void Main()
  {
    // Picks up configuration from the configuration file.
    SampleServiceClient wcfClient = new SampleServiceClient();
    try
    {
      // Making calls.
      Console.WriteLine("Enter the greeting to send: ");
      string greeting = Console.ReadLine();
      Console.WriteLine("The service responded: " + wcfClient.SampleMethod(greeting));
      Console.WriteLine("Press ENTER to exit:");
      Console.ReadLine();
    }
    catch (TimeoutException timeProblem)
    {
      Console.WriteLine("The service operation timed out. " + timeProblem.Message);
      wcfClient.Abort();
      Console.ReadLine();
    }
    // Catch the contractually specified SOAP fault raised here as an exception.
    catch (FaultException<GreetingFault> greetingFault)
    {
      Console.WriteLine(greetingFault.Detail.Message);
      Console.Read();
      wcfClient.Abort();
    }
    // Catch unrecognized faults. This handler receives exceptions thrown by WCF
    // services when ServiceDebugBehavior.IncludeExceptionDetailInFaults
    // is set to true.
    catch (FaultException faultEx)
    {
      Console.WriteLine("An unknown exception was received. "
        + faultEx.Message
        + faultEx.StackTrace
      );
      Console.Read();
      wcfClient.Abort();
    }
    // Standard communication fault handler.
    catch (CommunicationException commProblem)
    {
      Console.WriteLine("There was a communication problem. " + commProblem.Message + commProblem.StackTrace);
      Console.Read();
      wcfClient.Abort();
    }
  }
}

Imports System.ServiceModel
Imports System.ServiceModel.Channels
Imports Microsoft.WCF.Documentation

Public Class Client
  Public Shared Sub Main()
    ' Picks up configuration from the configuration file.
    Dim wcfClient As New SampleServiceClient()
    Try
      ' Making calls.
      Console.WriteLine("Enter the greeting to send: ")
      Dim greeting As String = Console.ReadLine()
      Console.WriteLine("The service responded: " & wcfClient.SampleMethod(greeting))
      Console.WriteLine("Press ENTER to exit:")
      Console.ReadLine()
    Catch timeProblem As TimeoutException
      Console.WriteLine("The service operation timed out. " & timeProblem.Message)
      wcfClient.Abort()
      Console.ReadLine()
    ' Catch the contractually specified SOAP fault raised here as an exception.
    Catch greetingFault As FaultException(Of GreetingFault)
      Console.WriteLine(greetingFault.Detail.Message)
      Console.Read()
      wcfClient.Abort()
    ' Catch unrecognized faults. This handler receives exceptions thrown by WCF
    ' services when ServiceDebugBehavior.IncludeExceptionDetailInFaults 
    ' is set to true.
    Catch faultEx As FaultException
      Console.WriteLine("An unknown exception was received. " & faultEx.Message + faultEx.StackTrace)
      Console.Read()
      wcfClient.Abort()
    ' Standard communication fault handler.
    Catch commProblem As CommunicationException
      Console.WriteLine("There was a communication problem. " & commProblem.Message + commProblem.StackTrace)
      Console.Read()
      wcfClient.Abort()
    End Try
  End Sub
End Class

注釈

サービスでは、FaultException クラスを使用して、デバッグ用にクライアントに返す型指定のないエラーを作成します。

クライアントでは、FaultException オブジェクトをキャッチして、IncludeExceptionDetailInFaults プロパティを true に設定してサービスから返された不明なエラーや一般的なエラーを処理します。 FaultExceptionCommunicationException を拡張するため、別々にキャッチする場合は、FaultException オブジェクトをキャッチする前に CommunicationException オブジェクトをキャッチしてください。

注意

双方向サービスでも、双方向クライアントとの対話で返される FaultException オブジェクトをキャッチできます。

通常は、FaultContractAttribute を使用して、クライアントにエラー情報が必要であると判断されるすべてのエラー ケースに対して (マネージド例外オブジェクトではなく) 厳密に型指定された SOAP エラーを返すサービスを設計することを強くお勧めします。 ただし、次の状況の場合は、FaultException を使用します。

  • デバッグ用にサービスから SOAP エラーを送信する。

  • エラーがサービスコントラクトの一部ではない場合に、クライアント上で SOAP エラーをキャッチする。

文字列をコンストラクターに渡し、クライアントが FaultException メソッドを呼び出すことでその文字列を取得する場合は、FaultException<TDetail>.ToString オブジェクトをスローします。 型パラメーターが System.ServiceModel.FaultException<TDetail> である System.String 型のエラー コントラクトを指定した場合、文字列値は FaultException<TDetail>.Detail を呼び出さなくても FaultException<TDetail>.ToString プロパティとして取得できます。

詳細については、「 コントラクトとサービスでの障害の指定と処理」を参照してください。

コンストラクター

FaultException()

FaultException クラスの新しいインスタンスを初期化します。

FaultException(FaultReason)

指定した理由を使用して、FaultException クラスの新しいインスタンスを初期化します。

FaultException(FaultReason, FaultCode)

指定した理由とエラー コードを使用して、FaultException クラスの新しいインスタンスを初期化します。

FaultException(FaultReason, FaultCode, String)

指定した理由、エラー コード、およびアクション値を使用して、FaultException クラスの新しいインスタンスを初期化します。

FaultException(MessageFault)

指定したメッセージ エラーの値を使用して、FaultException クラスの新しいインスタンスを初期化します。

FaultException(MessageFault, String)

指定したメッセージ エラーの値と用意されたアクション文字列を使用して、FaultException クラスの新しいインスタンスを初期化します。

FaultException(SerializationInfo, StreamingContext)

ストリームを FaultException オブジェクトに逆シリアル化するときに、指定したシリアル化情報とコンテキストを使用して、FaultException クラスの新しいインスタンスを初期化します。

FaultException(String)

指定されたエラー理由を使用して、FaultException クラスの新しいインスタンスを初期化します。

FaultException(String, FaultCode)

指定した理由と SOAP エラー コードを使用して、FaultException クラスの新しいインスタンスを初期化します。

FaultException(String, FaultCode, String)

指定した理由、エラー コード、およびアクション値を使用して、FaultException クラスの新しいインスタンスを初期化します。

プロパティ

Action

エラー メッセージの SOAP アクションの値を取得します。

Code

SOAP エラーのエラー コードを取得します。

Data

例外に関する追加のユーザー定義情報を提供する、キーと値のペアのコレクションを取得します。

(継承元 Exception)
HelpLink

この例外に関連付けられているヘルプ ファイルへのリンクを取得または設定します。

(継承元 Exception)
HResult

特定の例外に割り当てられているコード化数値である HRESULT を取得または設定します。

(継承元 Exception)
InnerException

現在の例外の原因となる Exception インスタンスを取得します。

(継承元 Exception)
Message

例外メッセージを取得します。

Reason

SOAP エラーの FaultReason を取得します。

Source

エラーの原因となるアプリケーションまたはオブジェクトの名前を取得または設定します。

(継承元 Exception)
StackTrace

呼び出し履歴で直前のフレームの文字列形式を取得します。

(継承元 Exception)
TargetSite

現在の例外がスローされたメソッドを取得します。

(継承元 Exception)

メソッド

CreateFault(MessageFault, String, Type[])

指定したメッセージ エラー、アクション、および詳細な型の配列から FaultException オブジェクトを返します。

CreateFault(MessageFault, Type[])

指定したメッセージ エラーと詳細な型の配列から FaultException オブジェクトを返します。

CreateMessageFault()

MessageFault オブジェクトを返します。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetBaseException()

派生クラスでオーバーライドされた場合、それ以後に発生する 1 つ以上の例外の根本原因である Exception を返します。

(継承元 Exception)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetObjectData(SerializationInfo, StreamingContext)

オブジェクトがストリームにシリアル化されるときに呼び出される GetObjectData(SerializationInfo, StreamingContext) メソッドの実装です。

GetObjectData(SerializationInfo, StreamingContext)

派生クラスでオーバーライドされた場合は、その例外に関する情報を使用して SerializationInfo を設定します。

(継承元 Exception)
GetType()

現在のインスタンスのランタイム型を取得します。

(継承元 Exception)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

現在の例外の文字列形式を作成して返します。

(継承元 Exception)

イベント

SerializeObjectState
古い.

例外がシリアル化され、例外に関するシリアル化されたデータを含む例外状態オブジェクトが作成されたときに発生します。

(継承元 Exception)

適用対象