JAVA - Проблемы с Try / Catch - PullRequest
2 голосов
/ 16 апреля 2011

Я пишу прямую программу стиля терминала аэропорта для класса. Я выхожу за рамки задания и «пытаюсь» использовать блоки Try / Catch ...

Однако Java сейчас тот парень.

Проблема в том, что, когда кто-то вводит небуквенный код в следующий код, он не перехватывает, а затем возвращается к блоку попытки, который он перехватил ...

Почему?

Редактировать - также работает метод containsOnlyLetters, разве кто-то считает, что это может быть ошибкой?

System.out.println("\nGood News! That seat is available");

try
{//try
    System.out.print("Enter your first name: ");
    temp = input.nextLine();
        if (containsOnlyLetters(temp))
            firstName = temp;
        else
            throw new Exception("First name must contain"
                    + " only letters");

    System.out.print("Enter your last name: ");
    temp = input.nextLine();
        if (containsOnlyLetters(temp))
            lastName = temp;
        else
            throw new Exception("Last name must contain"
                    + " only letters");
}//end try

catch(Exception e)
{//catch
    System.out.println(e.getMessage());
    System.out.println("\nPlease try again... ");
}//end catch

passengers[clients] = new clientInfo
            (firstName, lastName, clients, request, i);
bookSeat(i);
done = true;

Ответы [ 3 ]

10 голосов
/ 16 апреля 2011

Вы, кажется, неправильно поняли цель и механизм try / catch.

Это , а не , предназначенное для общего управления потоком, и более конкретно, значение не в том, что блок try повторяется до тех пор, пока он не завершится без исключения. Вместо этого блок запускается только один раз, суть в том, что блок catch будет выполняться только при возникновении соответствующего исключения.

Вы должны использовать цикл while и предложения if для своего кода, а не try / catch.

0 голосов
/ 16 апреля 2011

Что вы имеете в виду, когда говорите

, когда кто-то вводит небуквенный код в следующий код, который он не перехватывает, затем возвращается к блоку попытки, который он перехватил ...

Непонятно, какой результат вы ожидаете. Вы думаете, что, как только исключение будет обнаружено, управление вернется в блок try?Это не так, как это должно работать.

Когда генерируется исключение, элемент управления переходит к соответствующим блокам catch / finally, а затем перемещается вперед, остальные строки в блоке try не выполняются

0 голосов
/ 16 апреля 2011

Если генерируется Throwable или Error, он не будет перехвачен вашим обработчиком. Вместо этого вы можете попробовать поймать Throwable.

...