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 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> );> > }> }>

出力

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.'> );> > }> > }> }>

出力

Inside fun(). caught in main. 

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

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