I'm running into this situation where I need to parse a String
into an int
and I don't know what to do with the NumberFormatException
. The compiler doesn't complain when I don't catch it, but I just want to make sure that I'm handling this situation properly.
private int getCurrentPieceAsInt() {
int i = 0;
try {
i = Integer.parseInt(this.getCurrentPiece());
} catch (NumberFormatException e) {
i = 0;
}
return i;
}
I want to just simplify my code like this. The compiler doesn't have a problem with it, but the thread dies on the NumberFormatException
.
private int getCurrentPieceAsInt() {
int i = 0;
i = Integer.parseInt(this.getCurrentPiece());
return i;
}
Google CodePro wants me to log the exception in some way, and I agree that this is best practice.
private int getCurrentPieceAsInt() {
int i = 0;
try {
i = Integer.parseInt(this.getCurrentPiece());
} catch (NumberFormatException e) {
i = 0;
e.printStackTrace();
}
return i;
}
I want this method to return 0
when the current piece is not a number or cannot be parsed. When I don't catch the NumberFormatException
explicitly, does it not assign the variable i
? Or is there some default value that Integer.parseInt()
returns?
General style says that if I catch an exception, I should log it somewhere. I don't want to log it. It's normal operation for this exception to be thrown sometimes, which also doesn't sit well with me. I cannot find a function, however, which will tell me if Integer.parseInt()
will throw an exception. So my only course of action seems to be to just call it and catch the exception.
The javadoc for parseInt
doesn't help much.
Here are the specific questions I'd like to know:
- Is there a method that I can call that will tell me if
Integer.parseInt()
will throw aNumberFormatException
before calling it? Then I would have no problem logging this, since it should never happen. - If I simply do not catch the exception, will the valiable not get assigned? Then I will simply initialize it to the value that I want when it's not a number and not catch the exception.
- Is there a way to mark the exception somehow explicitly that I don't care about it? I'm thinking this would be something similar to
AWTEvent.consume()
. If so, then I will do this so that Google CodePro doesn't see this as "unlogged".
tryParse()
method. I think I understand why there's not one, since it basically means doing the work twice. Also, when I try it, the uncaughtNumberFormatException
kills the thread on the spot. I updated the question to reflect this. – Fake