我遇到了这种情况,我需要将 a 解析String
为 anint
而我不知道如何处理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 forparseInt
并没有多大帮助。
以下是我想知道的具体问题:
- 有没有一种我可以调用的方法,它会告诉我在调用它之前是否
Integer.parseInt()
会抛出一个NumberFormatException
?然后我就可以毫无问题地记录它,因为它永远不会发生。 - 如果我根本没有捕捉到异常,变量不会被分配吗?然后我将简单地将它初始化为我想要的值,当它不是数字并且不捕获异常时。
- 有没有办法以某种方式明确地标记我不关心的异常?我认为这将类似于
AWTEvent.consume()
. 如果是这样,那么我会这样做,以便 Google CodePro 不会将其视为“未记录”。