Блок try-catch внутри цикла for, исключение первой попытки переходит к блоку catch, затем переходит к следующей итерации цикла, вторая не - PullRequest
0 голосов
/ 14 июня 2019

Блок Try-catch внутри цикла for. Первая попытка, исключение переходит к блоку 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 внутри метода, а не выпрыгивать для попытки перехвата вне метода.

Ответы [ 2 ]

2 голосов
/ 15 июня 2019

Вы должны добавить еще один catch в конце, чтобы поймать все Exception, которые вы не учли.

Блок try-catch внутри цикла for.Первая попытка, исключение переходит к блоку 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
    }  
}
0 голосов
/ 14 июня 2019

Второе исключение было другого типа, чем указано в блоке catch.

...