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