Простая обработка исключений в Java - PullRequest
1 голос
/ 09 апреля 2009

Подскажите, пожалуйста, правильный ли мой код? Я готовлюсь к тесту через два часа, поэтому у меня нет времени написать приложение для его тестирования.

Вопрос в том, есть ли у меня JLabel с номером в качестве метки. просто ярлык с надписью 34 например. Я хочу извлечь номер из этикетки. но мне нужно обрабатывать исключения, то есть это не число, это может быть буква.

будет ли мой код ниже обрабатывать исключение правильно?

JLabel label = new JLabel("34");
int extracted;

это то, что я бы сделал

try{
    extracted = Integer.parseInt(extracted.getText());
    System.out.println("the number was: "+ extracted);
}
catch(IOException exception){
    System.out.println(label.getText() + " is not a number");
}

Ответы [ 8 ]

8 голосов
/ 09 апреля 2009

Закрыть, но перехват IOException не будет работать, потому что этот тип исключения не генерируется методом parseInt (). Попробуйте вместо этого перехватить NumberFormatException:

try{
    extracted = Integer.parseInt(extracted.getText());
    System.out.println("the number was: "+ extracted);
} catch(NumberFormatException exception) {
    System.out.println(label.getText() + " is not a number");
}
6 голосов
/ 09 апреля 2009

Я бы проверил документацию для Integer.parseInt ()

Кроме того, я настоятельно рекомендую настроить тестовый проект в любой IDE, которую вы используете, чтобы вы могли сами протестировать этот материал с быстрым поворотом! Даже если это скрипт vim / javac + make.

2 голосов
/ 09 апреля 2009

Это почти правильно, за исключением того, что вы ловите неправильное исключение; parseInt () создает исключение NumberFormatException.

1 голос
/ 09 апреля 2009

NumberFormatException - это RunTimeException (не проверено), для целей компиляции вам не нужно записывать его в часть catch.

Если то, что вы пытаетесь сделать, это определить, будет ли пользователь печатать числа в JTextField (а не какой-либо другой символ), вам следует взглянуть на регулярное выражение (Regular выражений), а не перехватывать его с помощью try .. catch механизм.

1 голос
/ 09 апреля 2009
0 голосов
/ 09 апреля 2009
0 голосов
/ 09 апреля 2009

В javadoc для Integer.parseInt () указано, что он может генерировать исключение NumberFormatException, а не IOException.

Код, который вы написали, не скомпилируется, потому что IOException - это проверенное исключение, которое не может быть сгенерировано никаким кодом из блока try.

0 голосов
/ 09 апреля 2009

Вы должны поймать NumberFormatException. В противном случае, хорошо.

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