Java で Catch を試す:例外処理の例
Java の例外とは?
Java の例外 プログラム命令の実行を中断し、プログラム実行の通常の流れを妨害するイベントです。メソッド内で発生したエラーイベント情報をラップしてランタイムシステムに渡すオブジェクトです。 Java では、例外は主にさまざまな種類のエラー状態を示すために使用されます。
このチュートリアルでは、次のことを学びます-
- 例外とは?
- なぜ例外が必要なのですか?
- 例外の処理方法
- キャッチブロックを試す
- Java 例外クラスの階層
- Java ファイナリー ブロック
エラーには次の 2 種類があります:
<オール>コンパイル時エラーは、再び 2 つのタイプに分類できます。
- 構文エラー
- セマンティック エラー
構文エラーの例:
int a;
を宣言する代わりに 誤って in a;
と宣言しました どのコンパイラがエラーをスローするか。
例:変数 int a;
を宣言しました そして数行のコードの後、再び整数を int a;
として宣言します .コードをコンパイルすると、これらすべてのエラーが強調表示されます。
実行時エラーの例
実行時エラーは 例外 と呼ばれます エラー。通常のプログラム実行フローを中断するイベントです。
例外の例は、算術例外、Nullpointer 例外、ゼロ除算例外などです。
Java の例外は、開発者が制御できないものです。
ビデオにアクセスできない場合は、ここをクリックしてください
なぜ例外が必要なのですか?
サーバーにアクセスするプログラムをコーディングしたとします。コードを開発している間、問題なく動作しました。
実際の本番稼働中は、サーバーがダウンしています。プログラムがアクセスしようとすると、例外が発生します。
例外の処理方法
これまで見てきたように、例外は開発者の制御を超えています。しかし、コードの失敗を環境問題のせいにすることは解決策ではありません。例外的な状況に対処する堅牢なプログラミングが必要です。このようなコードは、Exception Handler として知られています。
この例では、適切な例外処理は、サーバーがダウンしたときにバックアップ サーバーに接続することです。
これを実装するには、コードを入力してサーバーに接続します (従来の if および else 条件を使用)。
サーバーがダウンしているかどうかを確認します。はいの場合は、バックアップ サーバーに接続するためのコードを記述してください。
このような「if」ループと「else」ループを使用したコードの編成は、コードに複数の Java 例外を処理する場合には効果的ではありません。
class connect{ if(Server Up){ // code to connect to server } else{ // code to connect to BACKUP server } }
キャッチブロックを試す
Java は組み込みの例外処理を提供します。
<オール>
この例では、TRY ブロックにサーバーに接続するためのコードが含まれます。 CATCH ブロックには、バックアップ サーバーに接続するためのコードが含まれます。
サーバーが起動している場合、CATCH ブロック内のコードは無視されます。サーバーがダウンしている場合、例外が発生し、catch ブロック内のコードが実行されます。
したがって、これが Java での例外の処理方法です。
try &catch を使用するための構文
try{ statement(s) } catch (exceptiontype name){ statement(s) }
例
ステップ 1) 次のコードをエディターにコピーします
class JavaException { public static void main(String args[]){ int d = 0; int n = 20; int fraction = n/d; System.out.println("End Of Main"); } }
ステップ 2) ファイルを保存してコードをコンパイルします。コマンド java JavaException を使用してプログラムを実行します
ステップ 3) 算術例外 – 以下のように行番号 5 でゼロ除算が示され、行番号 6 は実行されません
ステップ 4) 次に、try と catch がこの例外の処理にどのように役立つかを調べてみましょう。コード行の原因となった例外を try に入れます。 ブロック、その後に キャッチ ブロック。次のコードをエディターにコピーします。
class JavaException { public static void main(String args[]) { int d = 0; int n = 20; try { int fraction = n / d; System.out.println("This line will not be Executed"); } catch (ArithmeticException e) { System.out.println("In the catch Block due to Exception = " + e); } System.out.println("End Of Main"); } }
ステップ 5) コードを保存、コンパイル、実行します。次の出力が得られます
ご覧のとおり、例外が処理され、コードの最後の行も実行されます。また、例外が発生するとすぐに制御フローが catch ブロックにジャンプするため、7 行目は実行されないことに注意してください。
注: AritmeticException オブジェクト「e」は、発生した例外に関する情報を保持します。これは、回復アクションを実行する際に役立ちます。
Java 例外クラス階層
1 つの catch ステートメントが実行されると、他のステートメントはバイパスされ、try/catch ブロックの後に実行が続行されます。ネストされた catch ブロックは例外階層に従います。
- Java のすべての例外クラスは、クラス「Throwable」を拡張します。 Throwable には、Error と Exception の 2 つのサブクラスがあります
- Error クラスは、メモリ エラー、ハードウェア エラー、JVM エラーなど、通常の状況ではプログラムによって発生しないと予想される例外または問題を定義します
- Exception クラスは、プログラムで処理できる例外を表し、プログラムは try および catch ブロックを使用してこの例外から回復できます
- ランタイム例外は、例外クラスのサブクラスです。これらのタイプの Exception は、実行時に発生し、コンパイル時に追跡できない例外を表します。同じ例として、0 除算例外や null ポインタ例外などがあります
- 入出力操作中に IO 例外が生成される
- Java の割り込み例外は、マルチスレッド中に生成されます。
例: try および catch ブロックのネストを理解する
ステップ 1) 次のコードをエディターにコピーします。
class JavaException { public static void main(String args[]) { try { int d = 1; int n = 20; int fraction = n / d; int g[] = { 1 }; g[20] = 100; } /*catch(Exception e){ System.out.println("In the catch block due to Exception = "+e); }*/ catch (ArithmeticException e) { System.out.println("In the catch block due to Exception = " + e); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("In the catch block due to Exception = " + e); } System.out.println("End Of Main"); } }
ステップ 2) ファイルを保存してコードをコンパイルします。コマンド java JavaException を使用してプログラムを実行します .
ステップ 3) ArrayIndexOutOfBoundsException が生成されます。 int d の値を 0 に変更します。コードを保存、コンパイル、実行します。
ステップ 4 ) ArithmeticException を生成する必要があります。
ステップ 5) 10 行目から 12 行目までのコメントを外します。コードを保存、コンパイル、実行します。
ステップ 6) コンパイル エラーですか? これは、Exception が ArithmeticException Exception の基底クラスであるためです。 ArithmeticException によって発生した例外は、例外クラスでも処理できます。そのため、ArithmeticException の catch ブロックは実行される機会がなく、冗長になります。したがって、コンパイル エラーです。
Java ファイナリー ブロック
finally ブロックは発生する例外に関係なく実行されます try ブロックで。 オプションです try ブロックで使用します。
try { statement(s) } catch (ExceptiontType name) { statement(s) } finally { statement(s) }
try ブロックで例外が発生した場合、catch ブロックが実行された後、finally ブロックが実行されます。
例
ステップ 1) 次のコードをエディターにコピーします。
class JavaException { public static void main(String args[]){ try{ int d = 0; int n =20; int fraction = n/d; } catch(ArithmeticException e){ System.out.println("In the catch block due to Exception = "+e); } finally{ System.out.println("Inside the finally block"); } } }
ステップ 2) コードを保存、コンパイル、実行します。
ステップ 3) 期待される出力。最後に、例外が発生してもブロックが実行されます。
ステップ 4) 変数 d =1 の値を変更します。コードを保存、コンパイル、実行し、出力を確認します。フォームの下部
まとめ :
- 例外は実行時エラーです これにより、プログラム実行の通常の流れが中断されます。プログラム実行中の中断は、エラーまたは例外と呼ばれます。
- エラーは 2 つのカテゴリに分類されます
- コンパイル時エラー – 構文エラー、セマンティック エラー
- 実行時エラー - 例外
- 堅牢なプログラムはすべての例外を処理する必要があります プログラム実行の通常の流れを続行します。 Java は組み込みの例外処理メソッドを提供します
- 例外ハンドラは、例外を処理する一連のコードです .例外は、try &catch を使用して Java で処理できます。
- ブロックしてみる :このブロックには通常のコードが入ります。
- ブロックをキャッチ :通常のコードにエラーがある場合、このブロックに入ります
Java
- try、except、finally ステートメントを使用した Python 例外処理
- Java 例外処理
- Java トライ...キャッチ
- Javaは複数の例外をキャッチします
- C++ 例外処理:Try、Catch、throw の例
- Java String charAt() メソッドと例
- 例を使用したJava文字列のendsWith()メソッド
- Java BufferedReader:例を使用して Java でファイルを読み取る方法
- プログラム例を使用した Java の挿入ソート アルゴリズム
- Python の例外処理:try、catch、finally、raise [例]
- Java 9 - リソースの改善を試す