Я столкнулся с такой ситуацией, когда мне нужно проанализировать String
в int
, и я не знаю, что делать с NumberFormatException
. Компилятор не жалуется, когда я его не поймаю, но я просто хочу убедиться, что я правильно обрабатываю эту ситуацию.
private int getCurrentPieceAsInt() {
int i = 0;
try {
i = Integer.parseInt(this.getCurrentPiece());
} catch (NumberFormatException e) {
i = 0;
}
return i;
}
Я хочу просто упростить свой код, как это. У компилятора нет проблем с ним, но поток умирает на NumberFormatException
.
private int getCurrentPieceAsInt() {
int i = 0;
i = Integer.parseInt(this.getCurrentPiece());
return i;
}
Google CodePro хочет, чтобы я каким-то образом зарегистрировал исключение, и я согласен, что это лучшая практика.
private int getCurrentPieceAsInt() {
int i = 0;
try {
i = Integer.parseInt(this.getCurrentPiece());
} catch (NumberFormatException e) {
i = 0;
e.printStackTrace();
}
return i;
}
Я хочу, чтобы этот метод возвращал 0
, когда текущая часть не является числом или не может быть проанализирована. Когда я не поймаю NumberFormatException
явно, не присваивает ли переменной i
? Или есть какое-то значение по умолчанию, которое возвращает Integer.parseInt()
?
В общем стиле говорится, что если я поймаю исключение, я должен его зарегистрировать где-нибудь. Я не хочу регистрировать его. Это обычная операция для того, чтобы это исключение иногда возникало, что также не очень хорошо сочетается со мной. Однако я не могу найти функцию, которая скажет мне, будет ли Integer.parseInt()
выдавать исключение. Поэтому мой единственный курс действий - просто вызвать его и поймать исключение.
javadoc для parseInt
не очень помогает.
Вот конкретные вопросы, которые я хотел бы знать:
- Есть ли способ, который я могу назвать, который скажет мне, если
Integer.parseInt()
будет бросатьNumberFormatException
, прежде чем называть его? Тогда у меня не было бы проблем записывать это, так как это никогда не должно происходить. - Если я просто не поймаю исключение, будет ли нецелесообразным назначаться? Затем я просто инициализирую его до значения, которое я хочу, когда оно не является числом, и не поймает исключение.
- Есть ли способ отметить исключение как-то явно, что меня это не волнует? Я думаю, что это будет похоже на
AWTEvent.consume()
. Если это так, то я сделаю это, чтобы Google CodePro не считал это "незамкнутым".