首页 > 解决方案 > for循环中的try-catch块,第一次尝试异常进入catch块,然后继续下一个循环迭代,第二个不

问题描述

for 循环中的 try-catch 块。第一次尝试,异常进入循环内的 catch 块,在 catch 块内继续将其抛出回循环的开头。但是第二次在 try 块中遇到异常时,它会在调用方法时抛出 try-catch 块,而不是停留在循环中

for (int count = 0; count < listCount; count++)
{
    try
    {
        var selectElement   = new SelectElement(pageElement);
        selectElement.SelectByText(pagevalue);
        break;
    }
    catch (NoSuchElementException NSE)
    {

   driver.FindElement(By.Id("policyNumber")).SendKeys(policies[count]);
        driver.FindElement(By.Id("btnOK")).Click();
        continue;
    }   
}

期望异常总是在方法内的 try-catch 块内捕获,而不是跳出到方法外的 try-catch 中。

标签: c#for-looptry-catch

解决方案


你应该在最后添加另一个catch,以捕捉所有Exception你没有考虑到的东西。

for 循环中的 try-catch 块。第一次尝试,异常进入循环内的 catch 块,在 catch 块内继续将其抛出回循环的开头。但是第二次在 try 块中遇到异常时,它会在调用方法时抛出 try-catch 块,而不是停留在循环中

for (int count = 0; count < listCount; count++)
{
    try
    {
        var selectElement   = new SelectElement(pageElement);
        selectElement.SelectByText(pagevalue);
        break;
    }
    catch (NoSuchElementException NSE)
    {

   driver.FindElement(By.Id("policyNumber")).SendKeys(policies[count]);
        driver.FindElement(By.Id("btnOK")).Click();
        continue;
    }  
    catch (Exception ex)
    {
       //Do something with other exception
    }  
}

推荐阅读