「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

Java で文字列を数値に変換するとき、NumberFormatException が発生することがあります。業務システムやバッチ処理では特に頻出する例外であり、原因が分かりづらいケースも多いです。

本記事では、よくある原因パターンと実際の対処方法をまとめています。Java 初心者の方や、業務でよく扱う方の参考になれば幸いです。


NumberFormatException とは?

NumberFormatException は、文字列を数値型へ変換しようとした際に、変換不可能な値だった場合に発生する例外です。

例:

Java では parseInt()parseDouble()valueOf() などで発生する可能性があります。


よくある原因と対処方法

① 文字列に空白(スペース或いは改行)が含まれている

CSV・Excel・外部連携データでよく発生するケースです。

対処方法(trim を使う)


② 数値ではない文字が混ざっている

例:12a310,0001_000(外部データ)

対処方法(正規表現で数字以外を除去)


③ NULLや空文字が入ってくる

業務バッチで一番多いパターンです。null チェックなしで parseInt() を呼ぶと例外になります。

対処方法(null/空チェック)

または Optional を活用する方法もあります。


④ 全角数字(全角スペースや全角記号)が混ざっている

ユーザー入力や Excel 由来のデータで発生します。

対処例(全角→半角変換)

ライブラリを使う場合は Apache Commons StringUtils.normalizeSpace() や ICU4J なども役立ちます。


⑤ 数値の桁が型の許容範囲を超えている

例:

対処方法(型を適切に選ぶ)

値の桁数推奨型
~9桁int
~18桁long
それ以上(金融・精度必要)BigDecimal

NumberFormatExceptionを防ぐための設計ポイント

  • 外部データは必ずバリデーションする

  • null・空文字チェック必須

  • トリム処理を基本にする

  • 例外をキャッチしてログに値を残す

例:


まとめ

NumberFormatException は単なる入力ミスだけでなく、空白・全角・記号・桁溢れ・nullなど、業務データ特有の問題が原因で発生する例外です。

本記事のポイントを踏まえれば、再発防止やバリデーション設計に役立つはずです。

Ads by Google