での例外処理 Java

例外とは何か Java?

例外 Java プログラム命令の実行を中断し、プログラム実行の正常な流れを妨げるイベントです。メソッド内で発生したエラーイベント情報をラップしたオブジェクトで、ランタイムシステムに渡されます。 Java例外は主に、さまざまな種類のエラー状態を示すために使用されます。

エラーには次の XNUMX 種類があります。

  1. コンパイル時エラー
  2. ランタイムエラー

コンパイル時エラーは、再度 XNUMX つのタイプに分類できます。

  • 構文エラー
  • セマンティックエラー

構文エラーの例:

宣言する代わりに int a; あなたはそれを間違って次のように宣言しました in a; どのコンパイラがエラーをスローするか。

例: 変数を宣言しました int a; コードの数行の後で、整数を次のように宣言します。 int a;コードをコンパイルすると、これらのエラーはすべて強調表示されます。

実行時エラーの例

ランタイムエラーは「ランタイムエラー」と呼ばれます。 例外 エラー。プログラム実行の通常のフローを中断するイベントです。例外の例としては、算術例外、Nullpointer例外、ゼロ除算例外などがあります。 Java 開発者が制御できないものです。

クリック こちら ビデオにアクセスできない場合

なぜ例外が必要なのでしょうか?

サーバーにアクセスするプログラムをコーディングしたとします。 コードの開発中は問題なく動作しました。

Java 例外処理

実際の運用実行中は、サーバーがダウンします。 プログラムがそれにアクセスしようとすると、例外が発生します。

Java 例外処理

例外の処理方法

これまで見てきたように、例外は開発者の制御の範囲を超えています。 しかし、コードの失敗を環境問題のせいにするのは解決策ではありません。 例外的な状況に対処する堅牢なプログラミングが必要です。 このようなコードは次のように知られています 例外ハンドラ。

この例では、適切な例外処理は、サーバーがダウンしているときにバックアップ サーバーに接続することです。

Java 例外処理

これを実装するには、サーバーに接続するためのコードを入力します(従来のifとelse条件を使用)。サーバーがダウンしているかどうかを確認します。ダウンしている場合は、バックアップサーバーに接続するコードを記述します。コードに複数の条件がある場合は、「if」と「else」ループを使用するこのようなコードの構成は効果的ではありません。 Javaの例外 処理する。

class connect{
	if(Server Up){
	 // code to connect to server
	}
	else{
	 // code to connect to BACKUP server
	}
}

キャッチブロックを試してみる

Java 優れた処理能力を内蔵しています。

  1. 通常のコードは TRY ブロック。
  2. 例外処理コードは キャッチ コロナ新型ウィルス(COVID-XNUMX)やメンタルヘルスの崩壊を避ける為の

キャッチブロックを試してみる

この例では、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コマンドを使用してプログラムを実行します。 Java例外

ステップ3) 算術例外 – ゼロ除算は行番号 5 で次のように表示されますが、行番号 6 は実行されません

ステップ4) 次に、try と catch がこの例外の処理にどのように役立つかを見てみましょう。 コード行を引き起こす例外を 試します ブロックの後に キャッチ ブロック。次のコードをエディターにコピーします。

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) コードを保存、コンパイル、実行すると、次の出力が得られます。

キャッチブロックを試してみる

ご覧のとおり、例外が処理され、コードの最後の行も実行されます。 また、行 #7 は実行されないことに注意してください。 例外が発生するとすぐに、制御フローは catch ブロックにジャンプします。

ご注意: AritmeticException オブジェクト「e」には、回復アクションを実行する際に役立つ、発生した例外に関する情報が含まれます。

Java 例外クラスの階層

XNUMX つの catch ステートメントが実行されると、他のステートメントはバイパスされ、try/catch ブロックの後も実行が続行されます。 ネストされた catch ブロックは例外階層に従います。


Java 例外階層

  • すべての例外クラス Java クラス「Throwable」を拡張します。ThrowableにはErrorとExceptionという2つのサブクラスがあります。
  • Error クラスは、メモリ エラー、ハードウェア エラー、JVM エラーなど、通常の状況ではプログラムによって発生すると予想されない例外や問題を定義します。
  • Exception クラスはプログラムで処理できる例外を表し、try および catch ブロックを使用してプログラムをこの例外から回復できます。
  • 実行時例外は例外クラスのサブクラスです。このタイプの例外は実行時に発生し、コンパイル時には追跡できない例外を表します。その優れた例としては、ゼロ除算例外やヌルポインタ例外などがあります。
  • 入出力操作中に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例外.

ステップ3) ArrayIndexOutOfBoundsException が生成されます。 int d の値を 0 に変更します。コードを保存、コンパイル、実行します。

ステップ 4) ArithmeticException を生成する必要があります。

ステップ5) 10 行目から 12 行目のコメントを外します。 コードを保存、コンパイル、実行します。

ステップ6) コンパイルエラー? これは、Exception が ArithmeticException 例外の基本クラスであるためです。 ArithmeticException によって発生した例外は、Exception クラスでも同様に処理できます。そのため、ArithmeticException の catch ブロックは実行される機会がなく、冗長になります。 したがって、コンパイルエラーが発生します。

Java 最後にブロック

最後のブロックは、 例外が発生しても関係なく実行される 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 の値を変更します。コードを保存、コンパイル、実行し、出力を確認します。フォームの下部

まとめ

  • An 例外は実行時エラーです プログラム実行の通常のフローを中断します。プログラム実行中の中断は、エラーまたは例外と呼ばれます。
  • エラーは XNUMX つのカテゴリに分類されます
    • コンパイル時エラー – 構文エラー、意味論的エラー
    • ランタイムエラー - 例外
  • A 堅牢なプログラムはすべての例外を処理する必要があります プログラム実行の通常のフローを続行します。 Java 組み込みの優れた処理方法を提供します
  • 例外ハンドラーは、次のコードのセットです。 例外を処理する例外は次のように処理できます。 Java try & catch を使用します。
  • ブロックしてみる: このブロックには通常のコードが入ります。
  • キャッチブロック: 通常のコードにエラーがある場合、このブロックに入ります。