Javaを勉強していると、意味わからんエラーに遭遇することが多々あります。特に初心者のうちはエラー文の読み方すらわからないというのが正直なところだと思います。
でも、エラーはただの敵ではありません。(最初はエラーが出るとくそウザかったですが。。)よく見れば、Javaはめちゃくちゃ丁寧に「どこがどうダメか」を教えてくれているんです。
この記事では、そんなJavaのエラーメッセージの読み方と、エラーが出たときにまず確認すべき3つのポイントを、実例付きで解説します!
エラー文は「一番上」を見るのが正解
エラーが出たとき、多くの初心者はスクロールして一番下まで読もうとします。でも、実はJavaのエラーは、最も重要な情報を「最上部」に表示してくれています。
例として、以下のコードを見てみましょう。
public class Sample {
public static void main(String[] args) {
String name = null;
System.out.println(name.length()); // ここでエラー
}
}
実行結果:
Exception in thread "main" java.lang.NullPointerException
at Sample.main(Sample.java:4)
このエラー文が教えてくれることは:
• どんなエラー? → NullPointerException
• どこで? → Sample.java:4(4行目)
→ nullの変数に対して.length()しようとしてクラッシュしたよ、ということ。
Javaは“怒って”いるのではなく、「ここを直したらいいよ!」って指差しで教えてくれてると思うと少し気が楽になります。
エラーの種類を分類してパニックにならない思考術
この記事を読んでくださっている方々はご存知だと思いますが、エラーにはいくつかのパターンがあります。
エラー分類早見表:
- コンパイルエラー
- 説明:書き方のルール違反。そもそも実行できない。
- 例)型ミス、セミコロン抜けなど。
- 実行時エラー(例外)
- 説明:実行はできたけど途中で落ちた。
- 例)NullPoiterExceptionなど。
- 論理エラー(バグ)
- 説明:実行はできるし途中で落ちないけど挙動がおかしい。
- 例)計算ミス、無限ループ、ifの条件エラーなど。
これらのエラーの種類を把握していると、思考が整理され、エラーが出ても落ち着いて対応できるようになります。
エラー文をググるときのコツと方法
コツ1:日本語と英語を混ぜて検索する。
java NullPointerException 原因
java IllegalArgumentException 解決
英語オンリーで調べると公式ドキュメントは出るけど初心者には難解です。
まずはQiitaやteratailのような日本語解説にたどり着くのが正解。
コツ2:エラー文をコピペしすぎない
Exception in thread "main" java.lang.NullPointerException at Sample.main(Sample.java:4)
→「特定の環境や行番号」まで含まれていてヒットしにくい。
コツ3:英語の意味をその場で調べる習慣をつける
IllegalStateException
→ 「不正な状態のときに発生」=状態の確認漏れ
英単語レベルで意味を覚えていくと、自然と「なぜ怒られたか」が分かるようになります。
よくあるJavaのエラー5選と対処方法
- NullPointerException
- nullに対して何かした
- 初期化忘れ、戻り値のnull処理漏れ
- nullに対して何かした
- ArrayIndexOutOfBoundsException
- 配列の範囲外を参照
- i < length のミス
- 配列の範囲外を参照
- ClassCastException
- キャストできない型変換
- instanceof の確認漏れ
- キャストできない型変換
- NumberFormatException
- 文字列→数値変換の失敗
- 数字でない文字を Integer.parseInt()
- 文字列→数値変換の失敗
- IllegalArgumentException
- 引数が不正
- メソッドに無効な値を渡してる
- 引数が不正
エラーは敵じゃない
エラーに対して「怖い」「苦手」と感じるのは普通です。
でも、それを「メッセージ」として冷静に受け取ることができれば、エラーは強力な先生になります。
この記事が、エラーとの向き合い方を一歩変えるきっかけになればうれしいです!!!
コメント