Java の例外 (例外とも呼ばれます) は、プログラムの実行中に発生し、実行中のプログラムの通常の命令フローを中断するイベントです。プログラムの実行エラーを迅速かつ効果的に処理するには、例外クラスを使用する必要があります。
例外の概要
プログラムでは、プログラマが予期しないさまざまな状況、またはユーザーの不正なデータなど、プログラマの制御を超えた状況によってエラーが発生することがあります。 、存在しないファイルを開こうとしているなど。プログラムの実行エラーを迅速かつ効果的に処理するために、Java では特に例外クラスを導入しました。
例 1
例外とは何かをよりよく理解するために、非常に単純な Java プログラムを見てみましょう。以下のサンプルコードでは、1~3の整数を入力することができ、それ以外の場合は入力エラーとなります。
package ch11; import Java.util.Scanner; public class TestO1 { public static void main(String[] args) { System.out.println("请输入您的选择:(1~3 之间的整数)"); Scanner input=new Scanner(System.in); int num=input.nextInt(); switch(num) { case 1: System.out.println("one"); break; case 2: System.out.println("two"); break; case 3: System.out.println("three"); break; default: System.out.println("error"); break; } } }
通常の状況では、ユーザーはシステム プロンプトに従って 1 から 3 までの数字を入力します。ただし、ユーザーが必要な入力を行わなかった場合、たとえば文字「a」を入力した場合、プログラムの実行時に例外が発生し、実行結果は次のようになります。
请输入您的选择:(1~3 之间的整数) a Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at text.text.main(text.java:11)
例外の原因と使用原則
Java で例外が発生する主な理由は 3 つあります:
1. Java 内部エラーが発生しました。 、Java 仮想マシンによって生成される例外。
2. null ポインター例外、配列範囲外例外など、書かれたプログラム コードのエラーによって発生する例外。この種の例外は未チェック例外と呼ばれ、通常、これらの例外を特定のクラスで集中的に処理する必要があります。
3. throw ステートメントを通じて手動で生成された例外はチェック例外と呼ばれ、通常はメソッドの呼び出し元に必要な情報を通知するために使用されます。
Java はオブジェクト指向メソッドを通じて例外を処理します。メソッドの実行中に例外が発生すると、メソッドは例外を表すオブジェクトを生成し、それをランタイム システムに渡します。ランタイム システムは、例外を処理するための対応するコードを探します。
例外オブジェクトを生成し、それをランタイム システムに送信するプロセスを例外のスローと呼びます。ランタイム システムは、その種類の例外を処理できるオブジェクトが見つかるまでメソッドの呼び出しスタックを検索します。このプロセスは例外のキャッチと呼ばれます。
Java 例外により、ユーザーはプログラムの堅牢性とセキュリティを考慮する必要があります。例外処理は、プログラムの通常のフローを制御するために使用されるべきではありません。その主な機能は、プログラムの実行中に発生する例外を捕捉し、それに応じて処理することです。特定のメソッドで発生する可能性のある例外を処理するコードを作成する場合、次の 3 つの原則に従うことができます:
1. 現在のメソッド宣言で try catch ステートメントを使用して、例外をキャッチします。
2. メソッドがオーバーライドされる場合、そのメソッドをオーバーライドするメソッドは、同じ例外または例外のサブクラスをスローする必要があります。
3. 親クラスが複数の例外をスローする場合、オーバーライド メソッドはそれらの例外のサブセットをスローする必要があり、新しい例外をスローすることはできません。
例外タイプ
Java のすべての例外タイプは、組み込みクラス java.lang.Throwable クラスのサブクラスです。つまり、Throwable は最上位にあります。例外クラス階層の。図 1 に示すように、Throwable クラスの下には、Exception と Error という 2 つの例外ブランチがあります。
図 2 からわかるように、Throwable クラスはすべての例外とエラーのスーパークラスです。以下の 2 つのサブクラスがあります: Error と Exception は、エラーと例外を表します。それぞれ。このうち、例外クラス Exception は実行時例外と非実行時例外に分けられ、非チェック例外(Unchecked Exception)、チェック例外(Checked Exception)とも呼ばれ、両者には大きな違いがあります。
·Exception クラスは、ユーザープログラムで発生する可能性のある例外に使用され、カスタム例外タイプのクラスを作成するために使用されるクラスでもあります。
·Error は、通常の状況ではプログラムによってキャッチされることが予期されない例外を定義します。タイプ Error の例外は、ランタイム システム自体に関連するエラーを表示するために Java ランタイムによって使用されます。スタック オーバーフローは、このエラーの例です。
·この章では、Error タイプの例外処理については説明しません。これらは通常、プログラムの制御を超えた致命的かつ致命的なエラーであるためです。この章の残りの部分では、Exception タイプの例外処理について説明します。
ランタイム例外は、NullPointerException、IndexOutOfBoundsException など、RuntimeException クラスとそのサブクラスの例外です。これらの例外はチェックされていない例外であり、プログラムでキャプチャするか処理しないかを選択できます。これらの例外は通常、プログラムの論理エラーによって発生するため、プログラムは論理的な観点からこのような例外の発生を回避するように努める必要があります。
非実行時例外とは、RuntimeException 以外の例外を指し、Exception クラスとそのサブクラスに属します。プログラムの文法上、必ず処理しなければならない例外であり、処理しないとプログラムはコンパイルされません。 IOException、ClassNotFoundException など、およびユーザー定義の例外例外。通常、カスタムのチェック例外は使用されません。表 1 に、いくつかの一般的な例外の種類とその機能を示します。
php 中国語の Web サイト、無料の Java 入門チュートリアル が多数あり、オンラインで学習することを歓迎します。
以上がJavaの例外とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。