1. 例外の最大の親クラスである Throwable
Throwable は 2 つのタイプに分類できます:
Error
Exception :
- #実行時例外 (チェックされていない例外)
#非実行時例外 (チェックされた例外)-
#エラー: エラーは、プログラムが処理できないエラーです。OutOfMemoryError、ThreadDeath など、jvm によってスローされます。これらの例外が発生すると、jvm はプログラムの実行を終了することを選択します
Exception: それ自体で処理できるプログラム例外です。
実行時例外: NullPointerException (null ポインター)、IndexOutOfBoundException (配列アウトなど) など、すべての RuntimeException クラスおよびサブクラスです。これらの例外はキャプチャして処理できます。または処理できません。
-
非実行時例外: (チェックされた例外) RuntimeException を除き、型は例外に属します。クラス。プログラム構文の観点から、これらの例外は処理する必要があります。処理されないと、プログラムは IOException、SQIException
-
2、try- などのコンパイルを通過できなくなります。 catch-finally 注意すべき 3 つのステートメント
try、catch、finally は単独では使用できません。これら 3 つは組み合わせて使用できます。組み合わせ方法は、try…catch、try&hellip です。 ;catch…finally、try…finally。catch は 1 つ以上存在でき、finally ステートメントは最大でも 1 つだけです。
-
3 つのステートメント ブロック内の変数のスコープはコード ブロックです。相互に独立してアクセスすることはできません。3 つのブロックすべてにアクセスできるようにしたい場合は、これらのブロックの外側に変数を定義してください。
-
catch ブロックが複数ある場合は、次の場所にあります。ほとんどの 1 つの例外クラスが一致して catch ブロック コードが実行され、他の catch ブロックは実行されず、一致する順序は上から下になります。一致する例外クラスは最大 1 つだけです。つまり、一致する例外クラスは 1 つだけです。
-
catch キャプチャされた例外クラスを繰り返すことはできません。最初にサブクラス例外をキャプチャし、次に親クラスをキャプチャする必要があります。例外
-
try ステートメントに問題があるかどうかに関係なく、finally ステートメントは実行する必要があります。finally は、プログラムの状態を一元的に管理するために、プログラムに統一された出口を提供します。通常の状況では、リソースは作業の終了とクリア
-
#
package com.exception;
public class Test {
public static void main(String[] args) {
int[] a=new int[5];
try {
for (int i = 0; i <10 ; i++) {
a[i]=i;
}
//空指针
}catch (ArrayIndexOutOfBoundsException e){
//弹出出错的地方
System.out.println("1");
e.printStackTrace();
//访问异常,数组越界
}catch (NullPointerException e){
System.out.println("2");
e.printStackTrace();
//无论有错与否,finally最终执行
} finally {
System.out.println("都能执行");
}
System.out.println("---------------");
}
}
ログイン後にコピー
3 で処理されます。final-finally-finalize
final の関数: 定数を定義するためのキーワード
-
finally: 例外で常に実行できるコード ブロック
-
finalize(): ガベージ コレクション、このメソッドはシステム コールです
-
4. Throws キーワード
メソッドを定義するときに、throws キーワードを使用できます。ステートメントを使用して、メソッドが例外を処理しないことを示します。代わりに、例外の処理はメソッドの呼び出し元に任されます。
-
メソッドを定義するときに、 throws キーワードを
-
主要パーティ (main) も throws キーワードを使用する場合、それは、プログラマ自身の選択で使用されます。これは、メイン メソッドが例外を処理せず、最終的に jvm に任せることを意味します。jvm はプログラムを終了することで例外を処理します
-
throws はサブクラス例外をスローします。このメソッドは例外を処理する必要はありません
-
注:
throw キーワード: 例外をカスタマイズできます。つまり、例外をスローします。スローされた場合、これはオブジェクトです。例外クラスの
5. throws と throw
throws の違い:
メソッド宣言の後に使用され、その後に例外クラス名が続きます。
メソッド本体で使用され、その後に例外オブジェクトが続きます。
- 例外オブジェクトは 1 つだけスローできます。
# 例外をスローすることを意味します。メソッド本体にはそれを処理するためのステートメントがあります。 throw 例外のスローは確実に発生しますが、その可能性はありません-
コード表現: - rree
以上がJava 例外 Exception インスタンスを分析する方法と手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。