スタックトレースの読み方
スタックトレースを読み、Javaプログラムを効率的にデバッグする方法を学びます。
「スタックトレースの読み方」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン3/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全3レッスンが含まれています。
導入
例外が捕捉されないと、Javaはスタックトレースを出力します。スタックトレースには、エラーの型と、そこに至るメソッド呼び出しの連鎖が示されます。
スタックトレースの形式
スタックトレースには通常、次の情報が含まれます:
- 1行目:例外の型とメッセージ。
- 続く行:エラーがたどったメソッドとfile:line。
コード: 捕捉されない例外
この捕捉されないNullPointerExceptionは、methodA → methodB → mainの経路を示すスタックトレースを出力します。
public class Main {
static void methodA() {
methodB();
}
static void methodB() {
String s = null;
System.out.println(s.length()); // NullPointerException
}
public static void main(String[] args) {
methodA();
}
}
行の読み方
スタックトレースの各行には、クラス、メソッド、ソースコードの行番号が含まれます。上から下へ読むと、エラーが発生した場所と、どのように伝播したかが分かります。
コード: 範囲外アクセス
このコードは、正確な行番号とともにArrayIndexOutOfBoundsExceptionを出力するため、バグの場所を特定しやすくなります。
public class Main {
public static void main(String[] args) {
int[] nums = {1, 2, 3};
System.out.println(nums[5]); // ArrayIndexOutOfBoundsException
}
}
コード: printStackTrace
catchの中でprintStackTrace()を呼び出すと、実行を続けながらデバッグ用にトレースを表示することもできます。
public class Main {
static void risky() {
throw new RuntimeException("Custom message");
}
public static void main(String[] args) {
try {
risky();
} catch (RuntimeException e) {
e.printStackTrace(); // print custom trace
}
}
}
スタックトレースの確認
クイックチェック:スタックトレースの1行目には通常、何が示されますか。
まとめ
まとめ:スタックトレースには、例外の型とメソッド呼び出しの経路が示されます。スタックトレースを読むと、エラーの行を特定してすばやくデバッグできます。
よくある質問
「スタックトレースの読み方」レッスンは無料ですか?
はい。「スタックトレースの読み方」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全3レッスンが含まれています。
「スタックトレースの読み方」で何を学びますか?
スタックトレースを読み、Javaプログラムを効率的にデバッグする方法を学びます。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Java Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/3です。
「スタックトレースの読み方」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJava Academyレッスンでコードを書いて実行できますか?
はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- try/catch/finally
- チェック例外と非チェック例外
- スタックトレースの読み方