gpt4 book ai didi

c# - FaultException() 服务抛出的异常没有被客户端catch(FaultException)捕获

转载 作者:行者123 更新时间:2023-11-30 16:33:34 24 4
gpt4 key购买 nike

好的,我知道我在这里遗漏了一些东西。我有以下操作合约:

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 block ) block 不会被执行。但是,当我删除 ArgumentException 以获取 catch(FaultException exp) 时,将执行相同的 catch block 。我不确定这一点,因为我正在从我的操作契约(Contract)中抛出 FaultException。我在这里遗漏了什么吗?

感谢您的帮助,阿希什

编辑:- 当我更新客户端中的服务引用时,我能够捕捉到 FaultException<ArgumentException>异常。

最佳答案

尝试使用 FaultException<DataContract>对于某些任意数据契约(Contract)类型。如果您查看为代理类中的错误生成的代码,我打赌您会看到 ArgumentException没有按照您期望的方式序列化。

关于c# - FaultException<T>() 服务抛出的异常没有被客户端catch(FaultException<T>)捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3032303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com