FaultException<T>()スローされる例外のサービスにとらわれない、クライアントcatch(FaultException<T>)

StackOverflow https://stackoverflow.com/questions/3032303

質問

まぁ私が見落とさないようです。いて以下の操作契約

public double DivideByZero(int x, int y)
{                   
    if (y == 0) 
    { 
        throw new FaultException<ArgumentException>
          (new ArgumentException("Just some dummy exception")
          ,new FaultReason("some very bogus reason"), new FaultCode("007"));
    }
    return x / y;
}

次からクライアント:-

  Console.WriteLine("Enter the x value");
  string x = Console.ReadLine();
  Console.WriteLine("Enter the Y value");
  string y = Console.ReadLine();
  try
  {
      double val = client.DivideByZero(Convert.ToInt32(x), Convert.ToInt32(y));
      Console.WriteLine("The result is " + val.ToString());
  }
  catch(FaultException<ArgumentException> exp)  
  {
      Console.WriteLine("An ArgumentException was thrown by the service "+ exp.ToString());    
  }
  catch (Exception exp)
  {
      Console.WriteLine(exp.ToString());
  }

上記の場合catch(FaultException exp)(第catchブロックとArgumentExceptionのクライアントコードブロックは実行されます。しかし、削除ArgumentExceptionてcatch(FaultException exp)と同じcatchブロックが実行されます。からないのでこって投げFaultExceptionから運用ます。私欠います。

感謝の皆さまのご協力のもと、 Ashish

編集時は更新サービスの参考になったのは捕まえることが FaultException<ArgumentException> ます。

役に立ちましたか?

解決

いてみることに FaultException<DataContract> 一部の任意のデータ契約タイプです。見れば、生成されたコードさわやかな風を感じそうなポップのプロキシクラス、ベットだとの ArgumentException な直列化さに期待するということです。

他のヒント

の場合は派生する例外クラスは、いかご確認くださいカスタム例外は、直列化コンストラクタ

protected MyCustomException(
          SerializationInfo info,
          StreamingContext context)
            : base(info, context) { }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top