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 つの方法で例外を処理できます。
- トライキャッチを使うことで
- を使用することで、 投げる キーワード
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 キーワードを使用すると、メソッドの呼び出し元に例外に関する情報を提供できます。