一般的なコード例外 (継続的に更新)

一般的なコード例外 (継続的に更新)

目次

一般的なコード例外 (継続的に更新)

1. java.lang.NullPointerException (null ポインタ例外)

2. java.lang.ClassNotFoundException (このクラス例外が見つかりません)

3. java.lang.ArithmeticException(算術例外)

4. java.lang.ArrayIndexOutOfBoundsException (配列インデックスが範囲外の例外)

5. java.lang.IllegalArgumentException (パラメータ例外)

6. java.lang.IllegalAccessException (アクセス例外なし)

7. java.lang.IncompatibilityClassChangeError (互換性のないクラス変更エラー)

8. java.lang.InstantiationError (インスタンス化例外)

9. java.lang.LinkageError(接続エラー)

10. java.lang.StackOverflowError (スタック オーバーフロー)

11. java.lang.OutOfMemoryError (メモリオーバーフロー例外)


1. java.lang.NullPointerException (null ポインタ例外)

Null ポインタ例外: 簡単に言うと、初期化されていないオブジェクト、または存在しないオブジェクトを呼び出しています。このエラーは、初期化されていないピクチャや、ピクチャ作成時のパスが間違っているなど、ピクチャの作成や配列の呼び出しなどの操作でよく発生します。 。Null ポインターは配列操作に表示されます。多くの場合、配列の初期化と配列要素の初期化を混同するのは、プログラミングを学び始めたばかりの友人が犯すよくある間違いです。配列の初期化は、配列に必要なスペースを割り当てることです。初期化された配列内の要素はインスタンス化されず、空のままであるため、(呼び出された場合には) 各要素を初期化する必要があります。

//使用一下判断方式有效控制空指针异常
//判断String aa是否为hello
String aa = hello;
if("hello".equals(aa)){}

2. java.lang.ClassNotFoundException (このクラス例外が見つかりません)

エラー メッセージ: クラス パッケージが見つかりませんでした

  1. まず、プロジェクトファイルに対応するjarパッケージが追加されていないので、依存関係にjarパッケージがあるか確認してください。
  2. 瓶パッケージがあれば。ダブルクリックして開きます。プロンプトが破損している場合は、再ダウンロードして再インポートする必要があります
  3. 最後の理由は、Maven プロジェクトの jar パッケージがデプロイされたプロジェクト ファイルに公開されていないことです。組み込みの Tomcat ではライブラリの依存関係は生成されません。

3. java.lang.ArithmeticException(算術例外)

この例外の説明は「数学的演算例外」です。例えば、プログラム中にゼロ除算などの演算があると、このような例外が発生します。このような例外については、数学的演算が含まれる箇所をよく確認してください。プログラムに何か問題がありますか?

4. java.lang.ArrayIndexOutOfBoundsException (配列インデックスが範囲外の例外)

多くの友人がこの例外によく遭遇したことがあると思います。例外の説明は「配列の添字が範囲外です」です。現在、ほとんどのプログラムには配列に対する操作があるため、配列を呼び出すときは、呼び出す添字を注意深く確認する必要があります配列のスコープを超えていますか? 一般に、明示的に呼び出す場合 (つまり、定数を添え字として直接使用する場合)、そのような間違いを犯すのは簡単ではありませんが、暗黙的に呼び出す場合 (つまり、プログラム内で定義される配列の長さは、事前に宣言されておらず、何らかの方法で決定される場合もあります。このとき、配列の長さを確認するのが最善です。この例外を避けるために配列を最初に指定します

5. java.lang.IllegalArgumentException (パラメータ例外)

この例外の説明は「メソッドのパラメータが間違っている」です。J2ME クラス ライブラリの多くのメソッドでは、場合によってはこのようなエラーが発生します。たとえば、音量調整メソッドの音量パラメータが負の数で記述されている場合などです。別の例としては、このメソッドの g .setColor(int red, int green, int blue) の場合、255 を超える値が 3 つある場合にもこの例外が発生しますので、この例外を見つけたら、私たちがしなければならないのは、メソッド呼び出しでパラメータの受け渡しにエラーがあるかどうかをすぐに確認することです。

6. java.lang.IllegalAccessException (アクセス例外なし)

この例外の説明は「アクセス権がない」です。この例外は、アプリケーションがクラスを呼び出したいが、現在のメソッドにそのクラスへのアクセス権がない場合に発生します。プログラム内で Package を使用する場合は、この例外に注意してください。

7. java.lang.IncompatibilityClassChangeError (互換性のないクラス変更エラー)

互換性のないクラス変更エラーです。この例外は、実行メソッドが依存するクラス定義に互換性のない変更が発生した場合にスローされます。一般に、このエラーは、アプリケーション全体を再コンパイルして直接実行せずに、アプリケーション内の一部のクラスの宣言定義が変更された場合に発生しやすくなります。

8. java.lang.InstantiationError (インスタンス化例外)

インスタンス化エラー。この例外は、アプリケーションが Java の new 演算子を介して抽象クラスまたはインターフェイスを構築しようとするとスローされます。

9. java.lang.LinkageError(接続エラー)

リンクエラー。このエラーとそのすべてのサブクラスは、クラスが他のクラスに依存していることを示しています。クラスがコンパイルされた後、依存するクラスはすべてのクラスを再コンパイルせずにクラス定義を変更するため、エラーが発生します。

10. java.lang.StackOverflowError (スタック オーバーフロー)

スタック オーバーフロー エラーは、通常、再帰が使用されているときに呼び出しのレベルが深すぎる場合にスローされる例外です。その理由は、再帰関数が無限に呼び出され、関数がスタック フレームの形式で仮想マシンのスタック メモリに存在し、スタック フレームが常に作成されるため、スタック オーバーフローが発生するためです。

11. java.lang.OutOfMemoryError (メモリオーバーフロー例外)

  1. コードに無限ループや再帰呼び出しがないか確認してください。
  2. 新しいオブジェクト エンティティを繰り返し生成する大きなループがないか確認します。
  3. データベースへのクエリに全データを取得するクエリがあるか確認してください。一般に、一度に 100,000 レコードをメモリにフェッチすると、メモリ オーバーフローが発生する可能性があります。この問題は比較的隠されており、オンラインになる前はデータベース内のデータが少ないため、問題が発生しにくいですが、オンラインになった後はデータベース内のデータが増加し、1 つのクエリでメモリ オーバーフローが発生する可能性があります。したがって、データベース クエリにはページネーションを使用するようにしてください。
  4. ListやMAPなどのコレクションオブジェクトが使用後に消去されていないか確認してください。List や MAP などのコレクション オブジェクトには常にオブジェクトへの参照があるため、これらのオブジェクトは GC によってリサイクルできません。

または、JVM メモリ設定が小さすぎる場合は、JVM メモリを増やしてコードを最適化できます。オブジェクトが継続的に作成される限り、Java ヒープはオブジェクト インスタンスの保存に使用され、GC ルート間に到達可能なパスが存在します。これらのオブジェクトをクリアすると、オブジェクト数が最大ヒープ容量制限に達した後にメモリ オーバーフロー例外が発生します (Java 仮想マシンの深い理解より抜粋)。 new String() はヒープ メモリ オーバーフローを引き起こしません。

java.lang.OutOfMemoryError: Tomcat での PermGen スペース例外処理

PermGen スペースの完全な名前は Permanent Generation スペースであり、メモリの永続的な記憶領域を指します。このメモリは主に JVM によってクラスとメタ情報を保存するために使用されます。クラスがローダーによってロードされると、PermGen に配置されます(インスタンス) のヒープ領域は異なります GC (ガベージ コレクション) は、メイン プログラムの実行中に PermGen 領域をクリーンアップしないため、アプリケーション内に CLASS が多数ある場合、 PermGen スペース エラーが発生する可能性があります。このエラーは、Web サーバーが JSP をプリコンパイルするときによく発生します。WEB APP で多数のサードパーティの jar を使用し、そのサイズが jvm のデフォルト サイズ (4M) を超える場合、このエラー メッセージが生成されます。解決策: MaxPermSize サイズ変更を手動で設定します。

 

参考資料 - メモリオーバーフローエラーの詳しい解説

おすすめ

転載: blog.csdn.net/a34651714/article/details/102834548