gpt4 book ai didi

c# - SoapHttpClientProtocol.Invoke 方法 .NET Web 服务的异常

转载 作者:行者123 更新时间:2023-11-30 22:50:38 27 4
gpt4 key购买 nike

我正在从基于 C# 表单的应用中调用 Web 服务。

ServReturnType obj = ServProxyClass(int i, int k);

我有可能取回异常。异常可能是服务根本没有连接,接收失败,但原始消息已发送,或者介于两者之间。然后,我需要根据抛出的异常(类型或消息或两者)做出决定,以便接下来执行两个操作之一。

try
{
ServReturnType obj = ServProxyClass(int i, int k);
}
catch (WebException ex)
{
DoAction1();
}
catch(SocketException ex)
{
DoAction2();
}
catch(SoapException ex)
{
DoAction1()
}

问题是,我对后续操作的选择取决于第一次调用是否在失败之前到达服务器。我怎样才能找到所有可能抛出的异常的列表,以及它们可能意味着什么,因为这是框架中的所有代码。我查看了 MSDN 文档,发现 SoapHttpClientProtocol.Invoke 可以抛出 SoapException,但是此方法调用的一些方法会引发 System.Net.WebExceptions。所以我需要一个包含整个调用堆栈的列表、它可以抛出的内容以及这意味着什么。

有什么想法吗?

更新 1

Darin,你的回答或多或少证实了我的怀疑,即我想要的东西并没有真正的意义。我选择先做更多的侦探工作,然后用它来决定下一步做什么。不幸的是,在这种情况下,由于我们正在处理信用卡,所以到底发生了什么以及我们是否发送数据真的很重要。

最佳答案

可从 Web 服务调用中抛出的异常的完整列表非常庞大,以至于我真的认为测试每种可能的异常类型并不是一个好主意。在许多情况下,捕获 SoapException 就足够了,它可能包含通过 SOAP Fault Element 传输的一些业务错误。并且所有其他异常都可以被视为未处理的错误:

try
{
ServReturnType obj = ServProxyClass(int i, int k);
}
catch(SoapException ex)
{
//Serialize and analyze the fault message from the exception to obtain more info.
DoSomethingWithTheInfo();
}
catch(Exception ex)
{
LogTheExceptionSoThatLaterYouKnowWhatHappened(ex);
SayToTheUserThatSomethingTerriblyWrongHappened();
}

这是一个不错的 article解释如何引发和处理 SoapExceptions。

关于c# - SoapHttpClientProtocol.Invoke 方法 .NET Web 服务的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/466433/

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