Есть ли предел для исключений, срабатывающих во время выполнения в Java? - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть метод, в основном цикл (со всеми надлежащими условиями перехвата), где условием выхода является закрываемый фрейм.Этот метод делает то, что требует подключения к интернету.Если нет подключения к Интернету, он будет рекурсивно вызывать себя, пока подключение к Интернету не будет восстановлено.Я заметил, что после того, как сработало определенное количество исключений, он просто перестанет вызывать рекурсивный метод, и, следовательно, после этого никакие исключения не сработают.Есть ли предел для исключений, срабатывающих во время выполнения?

public Download()
{
    try {
            while(!frame.isWindowClosed())
            {
                //doSomething
            }
        } catch (FailingHttpStatusCodeException e) {
            e.printStackTrace();
            textArea.append("****** FailingHttpStatusCodeException ******\n");
            new Download();
        } catch (MalformedURLException e) {
            e.printStackTrace();
            textArea.append("****** MalformedURLException ******\n");
            new Download();
        } catch (IOException e) {
            e.printStackTrace();
            textArea.append("****** IOException ******\n");
            new Download();
        } catch (Exception e) {
            e.printStackTrace();
            textArea.append("****** Exception ******\n");
            new Download();
        }
}

Ответы [ 2 ]

1 голос
/ 29 сентября 2019

установить попытку внутри цикла так, что пока кадр не закрыт, цикл продолжится.Если блок catch одинаков для всех ваших исключений, вы можете просто поймать самое высокое исключение:

public Download() {
    while (!frame.isWindowClosed()) {
        try {
            // doSomething
        } catch (Exception e) {
            e.printStackTrace();
            textArea.append("****** "+e.getClass().getName()+" ******\n");
        }
    }
}

Пока doSomething () не удалось закрыть кадр, цикл while будет повторяться.

0 голосов
/ 29 сентября 2019

Я думаю, вам лучше иметь этот цикл внутри метода, который не находится внутри конструктора ... Затем вызовите метод из конструктора.

Я думаю, что вы должны делать, это иметь механизм дляпроверьте, есть ли сетевое соединение. Затем выполните требуемую операцию, если есть соединение.Если нет подключения к Интернету, продолжайте.Вы, конечно, должны будете обернуть это в цикл while

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...