Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaで例外をスローする方法

例外は、プログラムの実行中に発生する予期しないイベントです。コードで例外が発生すると、プログラムのフローは終了します。

Javaでコーディングするときは、例外を正しく処理することが重要です。そうしないと、実行中にコードが終了し、エンドユーザーエクスペリエンスに影響を与える可能性があります。

そこで、throwおよびthrowsキーワードが登場します。Javaのthrowおよびthrowsキーワードは、Javaの例外を処理するために使用されます。このチュートリアルでは、例を参照して、Javaでこれらのキーワードを使用する方法について説明します。

Javaの例外

Javaには、プログラムのフローに影響を与える可能性のある2つのイベントがあります。エラーと例外です。

最初のイベントはエラーです。これは、メモリリーク、システムのメモリ不足、ライブラリの互換性の問題など、Java仮想マシンの問題を表します。エラーが発生した場合、プログラムは回復しない可能性があります。ただし、エラーは通常、コーダーの制御外であるため、Javaではエラーを処理しません。

例外は、プログラムに影響を与える可能性のある2番目のタイプのイベントです。例外は、コードでキャッチして処理できます。例外が発生すると、例外に関する情報を含むオブジェクトが作成されます。この情報を使用して、例外が発生した場合に何が発生するかをコードに指示できます。

例外が発生するいくつかの理由は次のとおりです。

  • コードのエラー
  • 存在しないファイルを開く
  • 無効なユーザー入力
  • ネットワーク接続の喪失

例外の処理を開始する前に知っておく必要のある例外には、次の2つのタイプがあります。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

  • チェックされていない例外は実行時にチェックされます。これらには、ArithmeticExceptionが含まれます およびArrayIndexOutOfBoundsException
  • チェックされた例外はコンパイル時にチェックされ、IOExceptionが含まれます およびInterruptedException

ほとんどの場合、コードでチェックされた例外を処理する必要があります。これは、チェックされていない例外は通常、コードの予期しない動作ではなく、プログラミングエラーの結果であるためです。

JavaThrowsキーワード

Javaのthrows キーワードは、コードのブロックで発生する可能性のある例外のタイプを宣言するために使用されます。 throws句の構文は次のとおりです。

accessModifier return functionName() throws Exception1, Exception2 {
   // Run code
  }

例を使用して、これがどのように機能するかを説明しましょう。映画に16歳以上参加している顧客の年齢をチェックする映画館のプログラムを作成しているとします。顧客が16歳未満の場合は、映画への入場を許可しないでください。 16歳以上の場合は入場を許可する必要があります。

顧客の年齢を確認し、顧客が16歳未満の場合にArithmeticException例外をスローするために使用するコードは次のとおりです。

class Main {
	public static void verifyAge(int age) throws ArithmeticException {
		if (age < 16) {
			throw new ArithmeticException("This customer is not old enough to see the movie.");
		} else {
			System.out.println("This customer is old enough to see the movie.");
		}
	}

	public static void main(String[] args) {
		verifyAge(14);
	}
}

私たちのコードは次を返します:

スレッド「main」の例外java.lang.ArithmeticException:This customer is not old enough to see the movie.

    at Main.verifyAge(Main.java:4)

Main.main(Main.java:11)​​の    at Main.main(Main.java:11)

このプログラムを実行すると、メインプログラムで指定するageパラメーターが14に設定されます。これは16未満であるため、verifyAge() メソッドが実行され、ステートメントage < 16 trueと評価され、ArithmeticExceptionがスローされます。

throwsキーワードは、verifyAge() によって返される例外のタイプを定義するために使用されます。 方法。 throwキーワードは、プログラムで例外をスローするために使用されます。

JavaThrowキーワード

Javaのthrowキーワードは、コードで1つの例外をスローするために使用されます。 throwキーワードの後に​​は、例外が発生した場合にプログラムでスローされるオブジェクトが続きます。

Javaのthrowキーワードの構文は次のとおりです。

throw throwObject;

Javaで例外を処理するために使用されているthrowステートメントの例をいくつか見ていきましょう。

チェックされた例外をスローする

「このファイルは存在しません」というメッセージを表示したいとします。 IOExceptionの場合 私たちのプログラムで遭遇しました。 IOExceptions チェックされた例外であるため、「throw」キーワードを使用してそれらを処理する必要があります。例外を処理するために使用するコードは次のとおりです。

import java.io.*;

class Main
	public static void getFile() throws IOException {
		throw new IOException("This file does not exist.");
	}
	
	public static void main(String[] args) {
		try {
			getFile();
		} catch (IOException error) {
			System.out.println(e.getMessage());
		}
	}
}

私たちのコードは次を返します:

This file does not exist.

コードを分解してみましょう。まず、java.io をインポートします ライブラリ。ファイルを処理するすべてのプログラムで使用します。次に、プログラムのコードを格納するMainというクラスを作成します。

Main クラスでは、getFile() という関数を定義します。 IOExceptionをスローします 。この関数は、「このファイルは存在しません」というメッセージを伴うIOExceptionをスローします。私たちのプログラムに。

Mainクラスのmain関数で、getFile() を実行しようとするtry/catchブロックを作成します。 方法。 IOExceptionが発生すると、catchブロック内のコードが実行され、IOExceptionからのメッセージがコンソールに出力されます。したがって、コードは「このファイルは存在しません。」というメッセージを返します。これは、前に宣言したメッセージです。

チェックされていない例外をスローする

したがって、StringIndexOutOfBoundsをスローしたいとします。 プログラムが存在しない文字列のインデックス値にアクセスしようとした場合の例外。このコードを使用してこれを行うことができます。

class Main {
	public static void outOfBounds() {
		throw new StringIndexOutOfBoundsException("This index value is invalid.");
	}

	public static void main(String[] args) {
		outOfBounds();
	}
}

私たちのコードでは多くのことが起こっているので、それを分解してみましょう。まず、このプログラムのコードが存在するMainというクラスを宣言しました。

次に、outOfBounds()という関数を作成しました。 これを実行すると、StringIndexOutOfBoundsがスローされます 例外。メッセージThis index value is invalid. 例外を伴います。最後に、メインプログラムで、outOfBounds()を呼び出します。 関数は、次を返します。

スレッド「main」の例外java.lang.StringIndexOutOfBoundsException:このインデックス値は無効です。

    at Main.outOfBounds(Main.java:3)

Main.main(Main.java:7)の    at Main.main(Main.java:11)

この例では、チェックされていない例外をスローしました。前に説明したように、これは通常は必要ありませんが、構文を表示するために、とにかくチェックされていない例外をスローしました。

結論

チェックされた例外の処理は、Javaで保守可能なコードを作成する上で重要な部分です。 Javaでは、throwおよびthrowsキーワードを使用して、例外をスローおよび処理します。

このチュートリアルでは、Javaでthrowおよびthrowsキーワードを使用する方法を説明し、プロセスの学習に役立つ関連する例を示しました。このチュートリアルを読んだら、プロのようにJavaで例外をスローして処理する準備が整いました!


  1. JavaでArrayListを初期化する方法

    Java Arrays.asList() メソッドと ArrayList クラスは、Javaで配列を初期化するために使用されます。通常の List インターフェイスを使用して配列を作成することはできないため、 ArrayList 空の配列を作成するには、クラスが必要です。 Java Arrays.asList() メソッドを使用すると、結果の配列を簡単に初期化できます。 配列リストの初期化とは、一連の値を配列に割り当てるプロセスを指します。 JavaでArrayListsを操作するには、ArrayListを初期化する方法を知っている必要があります。 ここで、JavaのArrays

  2. C++で例外はどのように機能しますか

    C ++では、例外処理はランタイムエラーを処理するプロセスです。例外は、C++で実行時にスローされるイベントです。すべての例外は、std::exceptionクラスから派生します。処理可能なランタイムエラーです。例外を処理しない場合は、例外メッセージを出力してプログラムを終了します。 例外は、C ++標準では、プログラム内で使用できるクラスとして定義されています。親子クラス階層の配置を以下に示します- C++の一般的な例外クラスは-です。 Sr.No。 例外と説明 1 std ::exception これは、すべての標準C++例外の例外および親クラスです。