如何使程序在异常后继续运行?

时间:2018-05-16 12:47:43

标签: java loops exception

如何使程序在异常后继续运行?

我有这段代码:

this.runnable = new Runnable() {
    public void run() {
        if (!isLoading && !playerList.isEmpty()) {
            this.isLoading = true;
            ArrayList<Player> clonedList = (ArrayList<Player>)playerList.clone();
            playerList.clear();
            for (Player player : clonedList) {
                main.getDataManager().loadPlayer(player);
            }
            this.isLoading = false;
        }
    }
}

方法“main.getDataManager()。loadPlayer(player);”可能会抛出异常。

异常后,每隔5秒执行此runnable的run()方法的无限循环停止。如果抛出异常,如何使它永远不会停止/退出?有可能吗?

3 个答案:

答案 0 :(得分:1)

抓住并吞下/处理它:

for (Player player : clonedList) {
    try {
       main.getDataManager().loadPlayer(player);
    } catch (Exception e) {

    }
}

答案 1 :(得分:0)

这是您需要处理异常的地方。如果未处理异常,程序将在抛出异常的位置后停止。但是你可以把你的异常包含在try-catch块中,就像这样。

for (Player player : clonedList) {
try {
   main.getDataManager().loadPlayer(player);
} catch (Exception e) {
   // your recovery from exception can be done here..
}

} //在这一点之后程序仍然可以执行甚至抛出异常..

答案 2 :(得分:0)

抓住例外:

public void run() {
    if (!isLoading && !playerList.isEmpty()) {
        this.isLoading = true;
        ArrayList<Player> clonedList = (ArrayList<Player>)playerList.clone();
        playerList.clear();
        for (Player player : clonedList) {
            try {
                main.getDataManager().loadPlayer(player);
            } catch (Exception e) { }
        }
        this.isLoading = false;
    }
}

您也可以将整个for循环放在try - catch块中,这样如果一个播放器无法加载,它会停止尝试加载其他播放器,直到{{1}再次被召唤。

run