处理while循环中的异常

本文关键字:异常 循环 while 处理 | 更新日期: 2023-09-27 18:09:27

我想在我的应用程序中记录一个错误消息,以重试调用webservice,但我只想在while循环之外显示一次错误消息,而不是每次重试和失败时记录错误,或者我应该做一个do while循环。

int retryCount = x;
int retryWait = y;
int retry = 0;
while (retry <= retryCount)
{
    try
    {
        //get response
    }
    catch (InvalidOperationException invalid)
    {
        message = //display status message 
    }
    catch (Exception exc)
    {
        //display log message 
        //retry again 
        retry++;
    }
    message = "Mamium tries have been exceeded
    Logs.WriteError(message);
    return false;
}

处理while循环中的异常

只需重置消息,并检查是否有,所以像这样:

    while (retry <= retryCount)
    {
        try
        {
            message = null;
            //get response
        }
        catch (InvalidOperationException invalid)
        {
            message = invalid.Message; //display status message 
        }
        catch (Exception exc)
        {
            //display log message 
            //retry again 
            message = exc.Message; //display status message 
            retry++;
        }
        if (!string.IsNullOrEmpty(message))
        {
            message = "Mamium tries have been exceeded"
            Logs.WriteError(message);
            return false;
        }
    }

您可以使用您的retryretryCount变量为例,并使用finally块递增。

{ // main scope
    int retry = 0, retryCount = 3;
    string message = null;
    while (retry < retryCount)
    {   
        try
        {
            //get response      
        }
        catch (Exception exc) 
        {
            //any error, since you don't need to give another threatment for other erros, just use  Exception
            message = exc.Message;
        }
        finally
        {   
            // increment retry anyway
            retry++;
        }
    }
    if (retry >= retryCount)
    {
        message = "Mamium tries have been exceeded"
        Logs.WriteError(message);
        return false;
    }       
    return true;
}