好的,我知道我在这里遗漏了一些东西。我有以下运营合同:
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)(客户端代码中第一个带有 ArgumentException 的 catch 块)块不会被执行。但是,当我删除 ArgumentException 以具有 catch(FaultException exp) 时,会执行相同的 catch 块。我不确定这一点,因为我从我的操作合同中抛出了 FaultException。我在这里有什么遗漏吗。
感谢你的帮助,Ashish
编辑:-当我更新客户端中的服务参考时,我能够捕捉到FaultException<ArgumentException>
异常。