的FaultException由服务抛出()异常没有由客户端捕获捕获(的FaultException )
-
27-09-2019 - |
题
好吧,我知道我失去了一些东西。我有以下操作合同:
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) { }
不隶属于 StackOverflow