logo

Javaで投げて投げる

Javaの例外処理 これは、アプリケーションの通常のフローを維持できるようにランタイム エラーを処理する効果的な手段の 1 つです。 Java 例外処理は、ClassNotFoundException、IOException、SQLException、RemoteException などの実行時エラーを処理するメカニズムです。

この記事では、について学びます Java で例外を処理できる throw と Java での throw 。

Javaスロー

Java の throw キーワードは、メソッドまたはコードのブロックから明示的に例外をスローするために使用されます。どちらでも投げることができます チェックされた例外またはチェックされていない例外 。 throw キーワードは主にカスタム例外をスローするために使用されます。



Java throw の構文

 throw   Instance  Example: throw new ArithmeticException('/ by zero');>

しかし、この例外、つまり、 実例 タイプである必要があります 投擲可能 またはのサブクラス 投擲可能

例えば 、Exception は Throwable のサブクラスであり、ユーザー定義の例外は通常、Exception クラスを拡張します。 C++ とは異なり、int、char、float などのデータ型、またはスロー不可能なクラスは例外として使用できません。

プログラムの実行フローは、throw ステートメントが実行され、最も近い囲みステートメントの直後に停止します。 試す ブロックがチェックされて、 キャッチ 例外の種類に一致するステートメント。一致するものが見つかった場合、制御はそのステートメントに転送され、そうでない場合は次に囲まれます。 試す ブロックがチェックされるなどです。一致しない場合 キャッチ が見つかると、デフォルトの例外ハンドラーがプログラムを停止します。

Java スローの例

例 1:

ジャワ

Javaの列挙型の値




// Java program that demonstrates the use of throw> class> ThrowExcep {> >static> void> fun()> >{> >try> {> >throw> new> NullPointerException(>'demo'>);> >}> >catch> (NullPointerException e) {> >System.out.println(>'Caught inside fun().'>);> >throw> e;>// rethrowing the exception> >}> >}> >public> static> void> main(String args[])> >{> >try> {> >fun();> >}> >catch> (NullPointerException e) {> >System.out.println(>'Caught in main.'>);> >}> >}> }>

>

>

出力

Caught inside fun(). Caught in main.>

例 2

ジャワ




// Java program that demonstrates> // the use of throw> class> Test {> >public> static> void> main(String[] args)> >{> >System.out.println(>1> />0>);> >}> }>

>

>

出力

Javaのリストメソッド
Exception in thread 'main' java.lang.ArithmeticException: / by zero>

Java スロー

throws は、メソッドのシグネチャで使用される Java のキーワードで、このメソッドがリストされたタイプの例外の 1 つをスローする可能性があることを示します。これらのメソッドの呼び出し元は、try-catch ブロックを使用して例外を処理する必要があります。

Javaスローの構文

 type method_name(parameters) throws exception_list exception_list is a comma separated list of all the exceptions which a method might throw.>

プログラム内で例外が発生する可能性がある場合、コンパイラは常にそれについて警告し、強制的にそのチェック例外を処理する必要があります。そうでないと、次のようなコンパイル時エラーが発生します。 報告されていない例外 XXX をキャッチするか、スローするように宣言する必要があります 。このコンパイル時エラーを防ぐために、次の 2 つの方法で例外を処理できます。

  1. トライキャッチを使うことで
  2. を使用することで、 投げる キーワード

throws キーワードを使用して例外処理の責任を呼び出し元 (メソッドまたは JVM の場合もあります) に委任すると、呼び出し元のメソッドがその例外を処理する責任を負います。

Java スローの例

例1

ジャワ




// Java program to illustrate error in case> // of unhandled exception> class> tst {> >public> static> void> main(String[] args)> >{> >Thread.sleep(>10000>);> >System.out.println(>'Hello Geeks'>);> >}> }>

>

>

出力

error: unreported exception InterruptedException; must be caught or declared to be thrown>

説明

上記のプログラムでは、メインスレッドがスリープ状態になると例外が発生する可能性があり、他のスレッドが main() メソッドを実行して InterruptedException を引き起こす可能性があるため、コンパイル時エラーが発生します。

例 2

ジャワ




// Java program to illustrate throws> class> tst {> >public> static> void> main(String[] args)> >throws> InterruptedException> >{> >Thread.sleep(>10000>);> >System.out.println(>'Hello Geeks'>);> >}> }>

>

>

出力

Hello Geeks>

説明

上記のプログラムでは、 throws キーワードを使用して InterruptedException を処理し、次のような出力を取得します。 こんにちは、オタクの皆さん

例 3

ジャワ




// Java program to demonstrate working of throws> class> ThrowsExecp {> >static> void> fun()>throws> IllegalAccessException> >{> >System.out.println(>'Inside fun(). '>);> >throw> new> IllegalAccessException(>'demo'>);> >}> >public> static> void> main(String args[])> >{> >try> {> >fun();> >}> >catch> (IllegalAccessException e) {> >System.out.println(>'caught in main.'>);> >}> >}> }>

>

>

出力

コアJava言語
Inside fun(). caught in main.>

throws キーワードに関する注意事項

  • throws キーワードはチェックされた例外の場合にのみ必要であり、チェックされていない例外に対して throws キーワードを使用するのは無意味です。
  • throws キーワードはコンパイラを納得させるためにのみ必要であり、throws キーワードを使用してもプログラムの異常終了は防止されません。
  • throws キーワードを使用すると、メソッドの呼び出し元に例外に関する情報を提供できます。