Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaの別のtrycatchブロック内でtrycatchブロックを宣言できますか?


はいを宣言できます 別のtry-catchブロック内のtry-catchブロック。これは、ネストされたtry-catchブロックと呼ばれます。

ネストされたトライキャッチブロック

  • インナートライステートマンの場合 t 一致するキャッチステートメントがありません 特定の例外の場合、制御は次のtryステートメントのcatchハンドラーに転送されます。 一致するcatchステートメントに期待されます。
  • これは、catchステートメントの1つが成功するまで続きます 、またはすべてのネストされた試行まで ステートメントが完了しました。
  • 一致するcatchステートメントがない場合は、Javaランタイムシステム 例外を処理します。
  • ネストされたtryブロックの場合 使用される場合、内部試行ブロック 最初に実行されます。内側のtryブロックでスローされた例外は、対応するcatchブロックでキャッチされます。 一致するcatchブロックが見つからない場合は、外部試行ブロックのcatchブロック ネストされたすべてのtryステートメントが使い果たされるまで検査されます。一致するブロックが見つからない場合は、Javaランタイム環境 実行を処理します。

構文

try {
   statement 1;
   statement 2;
   try {
      statement 1;
      statement 2;
   }
   catch(Exception e) {
      // catch the corresponding exception  
   }  
}
catch(Exception e) {
   // catch the corresponding exception
}
   .............

import java.io.*;
public class NestedTryCatchTest {
   public static void main (String args[]) throws IOException {
    int n = 10, result = 0;
      try { // outer try block
         FileInputStream fis = null;
         fis = new FileInputStream (new File (args[0]));
         try { // inner trty block
            result = n/0;
            System.out.println("The result is"+result);
         }  
         catch(ArithmeticException e) { // inner catch block
            System.out.println("Division by Zero");
         }
      }
      catch (FileNotFoundException e) { // outer catch block
         System.out.println("File was not found");
      }
      catch(ArrayIndexOutOfBoundsException e) { // outer catch block
         System.out.println("Array Index Out Of Bounds Exception occured ");
      }
      catch(Exception e) { // outer catch block
         System.out.println("Exception occured"+e);
      }
   }
}

出力

Array Index Out Of Bounds Exception occured

  1. Javaでcatchブロックなしのtryブロックを使用できますか?

    はい、finalブロックを使用することで、catchブロックなしでtryブロックを作成できます。 ご存知のとおり、tryブロックで例外が発生した場合でも、System.exit()が常に実行されることを除いて、finalブロックは常に実行されます。 例1 public class TryBlockWithoutCatch {    public static void main(String[] args) {       try {          System.out.println(&q

  2. Javaでメインメソッドをプライベートとして宣言できますか?

    はい、Javaでメインメソッドをプライベートとして宣言できます。 エラーなしで正常にコンパイルされますが、実行時に、メインメソッドがパブリックではないと表示されます。 例: class PrivateMainMethod {    private static void main(String args[]){        System.out.println("Welcome to Tutorials Point");     } } 上記のコードはコンパイル時に正常に機能しますが、実行