while循环条件的奇怪行为

时间:2015-03-18 20:57:35

标签: java while-loop try-catch

我有以下方法。我遇到了关于下面的WHILE循环的奇怪行为。

我最初将布尔值notDone的值设置为true。在WHILE循环内,第一次出现异常,因此程序控制转到CATCH块。 第二次调用execute()方法成功。我还看到println语句(getProperties() postExecute())具有正确的notDone值(正确设置为false)。但是尽管如此,while循环条件得到满足并且execute()方法再次被调用。关于什么导致while条件失败的任何想法?

    public List<Property> getProperties() {
        int count = 0;
        boolean notDone = true;
        while (notDone) {
            System.out.println("getProperties() notDone => " + notDone);
            try {
                execute();
                notDone = false;
                System.out.println("getProperties() postExecute() " + notDone);
            } catch (Exception e) {
                System.out.println("getProperties() Exception occured " + notDone);
                if (e instanceof java.net.UnknownHostException) {
                    // Potentially proxy error.
                    if (ConfigManager.getInstance().getConfig().isUseProxy()) {
                        System.out
                                .println("UnknownHostException - Switching off proxy");
                        ConfigManager.getInstance().getConfig()
                                .setUseProxy(false);
                    } else {
                        System.out
                                .println("UnknownHostException - Switching on proxy");
                        ConfigManager.getInstance().getConfig()
                                .setUseProxy(true);
                    }
                }

                if (count > 2) {
                    break;
                }

                count++;
            }
        }
        return result;
    }

0 个答案:

没有答案