を解析する必要があるこの状況に遭遇し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()
。もしそうなら、GoogleCodeProがこれを「ログに記録されていない」と見なさないようにこれを行います。