c# - 在 C# 中重复一个函数,直到它不再抛出异常

标签 c# exception

我有一个调用 SOAP 接口(interface)的类,并返回一组数据。但是,如果此请求超时,则会抛出异常。这很好。但是,我希望我的程序再次尝试进行此调用。如果超时,我希望它继续调用此电话,直到成功为止。我怎样才能做到这一点?

例如:

try
{
   salesOrdersArray = MagServ.salesOrderList(sessID, filter);
}
catch
{
   ?? What Goes Here to FORCE the above line of code to rerun until it succeeds.
}

最佳答案

你只需要永远循环:

while (true)
{
    try
    {
        salesOrdersArray = MagServ.salesOrderList(sessID, filter);
        break; // Exit the loop. Could return from the method, depending
               // on what it does...
    }
    catch
    {
        // Log, I suspect...
    }
}

请注意,您几乎可以肯定不会实际上永远循环。您几乎肯定应该有最大尝试次数,并且可能只捕获特定 异常。捕获所有异常永远可能会很可怕……想象一下如果salesOrderList(非常规方法名称,顺便说一句)抛出ArgumentNullException因为你有一个 bug 而 filter 是空的...你真的想永远占用 100% 的 CPU 吗?

关于c# - 在 C# 中重复一个函数,直到它不再抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7920657/

相关文章:

c# - 与 Entity Framework 和 SQL (ADO.NET) 的并发性

java - 处理默默终止线程的意外异常

c# - 用户输入的值验证和错误捕获级别

java - 检测 Java 异常的责任变量

c# - appsetting 节点中的子 appsettings c#

c# - 为移动设备 (.NET) 在页面中排序框架( block )

c# - visual studio 2013中 "default"的代码生成策略

java - 为什么从列表中删除元素会抛出 ConcurrentModificationException?

c# - 不使用 LINQ 的原因

c# - 从 Asp.Net Core 中的 web.config 读取环境变量