的FaultException由服务抛出()异常没有由客户端捕获捕获(的FaultException

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());
  }

在上面的情况下捕获(FaultException异常EXP)(具有ArgumentException的第一catch块在客户端代码)块没有得到执行。然而,当我删除的ArgumentException有赶上(FaultException异常EXP),同样的catch块被执行。我不知道关于这个问题,我从我的经营合同抛出FaultException异常。我错过任何东西在这里。

感谢您的帮助, 阿希什

修改 - 当我更新我的客户服务参考,我能赶上FaultException<ArgumentException>例外

有帮助吗?

解决方案

FaultException<DataContract>对于某些任意数据合同类型尝试。如果你看一下在代理类故障生成的代码,我敢打赌,你会看到ArgumentException不序列化,你期望它的方式。

其他提示

如果您是派生异常类,请确保您的自定义异常有系列化构造

protected MyCustomException(
          SerializationInfo info,
          StreamingContext context)
            : base(info, context) { }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top