例外スタックは、日常生活において問題を見つけるための最も重要な手段であり、問題解決に大きな助けとなります。しかし、私たちは皆、特に多くの例外スタックや深いレベルがある場合に、例外を目にする習慣があるかもしれません。
非常に心配で怖くなったので、すぐにスキャンして、何が問題なのか推測し始めました。コードを調整するのは、デバッグも可能ですが、それでもかなりの時間を無駄にします。
理由:
1. 例外スタック情報を注意深く読んでいなかった;
2. スタックが多すぎます。 . 問題の原因は正確にはわかりません。
解決策:
1. 例外スタック生成のプロセスを理解します。
2. スタック情報を根気よく読んでください。
3. 問題を解決します
1. 例外生成プロセス: 上記のエラーが報告され、以下が続きます
例: 次のテスト コードがあります
package com.bsx.test; public class TestException { public static void main(String[] args) { TestException exception = new TestException(); exception.m1(); } public void m1() { m2(); } public void m2() { m3(); } public void m3() { String name = null; System.out.println(name.length()); } }
実行後の出力結果は以下の通りです:
Exception in thread "main" java.lang.NullPointerException at com.bsx.test.TestException.m3(TestException.java:22) at com.bsx.test.TestException.m2(TestException.java:17) at com.bsx.test.TestException.m1(TestException.java:13) at com.bsx.test.TestException.main(TestException.java:9)
エラーログの出力順序が呼び出し順序と逆になっていることがわかります。
Java メソッドは、実行時に仮想マシン スタックで実行されることがわかっています。メソッドが実行されるたびに、新しいスタック フレームが作成され、仮想マシン スタックにプッシュされます。
これは後入れ先出し構造なので、エラーが報告される場合、まず呼び出し先からエラーが報告され、その後呼び出し元が順番にエラーを報告するため、印刷時の順序はエラーは、エラー位置が先頭にあり、呼び出し元の行が後方にあることも意味します。これから結論を導き出すことができます。エラーは上に報告されており、以下が続きます。
2. エラー メッセージを理解する: コードがエラーを報告する場所を見つけます
上記の分析から、エラーの場所が上であることがわかります。ほとんどの場合、コード内でエラーが発生した場所は上部のエラー メッセージです。
ただし、トップのログが独自のコードではない場合があります。これは、コードがサードパーティの jar パッケージのコードを呼び出すためです。しかし、これは問題の特定には影響しません。上で報告されたエラーに基づいて問題を特定し、以下に従います。実際のエラーの場所は依然として上にあります。
その後、独自のコードを上から下まで見つけるだけで済みます。最初に見つかったコードの場所が、コード内のエラーの原因となった場所です。場合によっては、明らかなエラー メッセージがあり、エラー メッセージに基づいて問題の核心を直接特定できることがあります。
エラー メッセージにエラーの原因が明確に示されていない場合がありますが、この時点では、この正確な位置にブレークポイントを設定してデバッグできます。
以上がJavaで例外スタック内で例外が発生した場所を特定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。