如何在 catch 块中打印变量?

How to print variable in catch block?

我是编程新手。帮帮我。我想打印在 try 块到 catch 块中失败的 links 的值。我怎么能那样做?这是我的代码:

public class test {
    public static void main(String[] args) throws NoSuchElementException {
        try { 
            int i=1;
            String links[]= new String[10];
            links[1]="link1"
            links[2]="link2"
            links[3]="link3"
            links[3]="link4"
            WebDriver driver = new FirefoxDriver();

            while(i<5){
                driver.get(links[i])
                driver.findElement(By.xpath("//div[contains(@id,'image')]")).click();
                i++;
            }
        }
        catch(NoSuchElementException e){
            // e.printStackTrace(System.out);
        }
    }
}

假设 link 之一找不到元素。我希望在 catch 块中打印 link 并转到下一个 link。我该怎么做?

为了能够在 link 失败后尝试下一个 link,您应该将 try-catch 块放在 while 循环中。

int i=0;
String links[]= new String[10];
links[0]="link1";
links[1]="link2";
links[2]="link3";
links[3]="link4";
WebDriver driver = new FirefoxDriver();

while(i<4){
    try { 
        driver.get(links[i]);
        driver.findElement(By.xpath("//div[contains(@id,'image')]")).click();
        i++;
    }
    catch(NoSuchElementException e){
        System.out.println(links[i] + " failed");
        i++;
    }
}

要访问 trycatch 块中的变量,您需要将它们的作用域移得更远(在您的例子中是周围的方法)。如果您希望能够继续迭代您的数组,您需要通过将 try-catch 块移动到其中来确保在循环的单次迭代中捕获异常。这也缩小了 try-catch 块的大小,这通常是一件好事。

public class test {
    public static void main(String[] args) throws NoSuchElementException {
        int i = 1;
        String links[] = new String[10];
        links[1] = "link1"
        links[2] = "link2"
        links[3] = "link3"
        links[3] = "link4"
        WebDriver driver = new FirefoxDriver();

        while (i < 5) {
            try {
                driver.get(links[i])
                driver.findElement(By.xpath("//div[contains(@id,'image')]")).click();
            } catch (NoSuchElementException e) {
                System.out.println("Problem link had index: " + i);
            } finally {
                i++;
            }
        }
    }
}

在 try 块外声明 links 变量。 link 变量超出您代码的范围,即它应该在您启动 try 块之前。

String links[] = new String[10]
try{...

}