산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

자바 시도 ... 캐치

자바 시도...캐치

이 자습서에서는 예제를 통해 Java의 try catch 문에 대해 알아봅니다.

try...catch 자바의 블록은 예외를 처리하고 프로그램의 비정상 종료를 방지하는 데 사용됩니다.

다음은 try...catch의 구문입니다. 자바에서 차단합니다.

try{
  // code
}
catch(exception) {
  // code
}

try 블록에는 예외를 생성할 수 있는 코드가 포함되어 있습니다.

catch 블록은 try 내부에 예외가 발생할 때 실행되는 코드를 포함합니다. 차단합니다.

예:Java try...catch 블록

class Main {
  public static void main(String[] args) {

    try {
      int divideByZero = 5 / 0;
      System.out.println("Rest of code in try block");
    }

    catch (ArithmeticException e) {
      System.out.println("ArithmeticException => " + e.getMessage());
    }
  }
}

출력

ArithmeticException => / by zero

위의 예에서 줄을 주목하십시오.

int divideByZero = 5 / 0;

여기서는 숫자를 0으로 나누려고 합니다. . 이 경우 예외가 발생합니다. 따라서 이 코드를 try 안에 넣었습니다. 차단합니다.

프로그램이 이 코드를 만나면 ArithmeticException 발생합니다. 그리고 예외는 catch에 의해 잡힙니다. catch 내부의 코드를 차단하고 실행합니다. 차단합니다.

catch 블록은 try 내부에 예외가 있는 경우에만 실행됩니다. 차단합니다.

참고 :자바에서는 try을 사용할 수 있습니다. catch이 없는 블록 차단하다. 그러나 catch는 사용할 수 없습니다. try 없는 블록 차단합니다.

<시간>

자바 시도...마침내 차단

try도 사용할 수 있습니다. finally 블록과 함께 차단합니다.

이 경우 try 블록 내부에 예외가 있든 없든 finally 블록은 항상 실행됩니다.

예:Java try...finally 차단

class Main {
  public static void main(String[] args) {
    try {
      int divideByZero = 5 / 0;
    }

    finally {
      System.out.println("Finally block is always executed");
    }
  }
}

출력

Finally block is always executed
Exception in thread "main" java.lang.ArithmeticException: / by zero
        at Main.main(Main.java:4)

위의 예에서는 try을 사용했습니다. finally와 함께 차단 차단하다. try 안의 코드가 차단으로 인해 예외가 발생합니다.

그러나 finally 내부의 코드는 블록은 예외와 상관없이 실행됩니다.

<시간>

자바 try...catch...finally 차단

Java에서는 try...catch 뒤에 finally 블록을 사용할 수도 있습니다. 차단하다. 예를 들어,

import java.io.*;

class ListOfNumbers {

  // create an integer array
  private int[] list = {5, 6, 8, 9, 2};

  // method to write data from array to a fila
  public void writeList() {
    PrintWriter out = null;

    try {
      System.out.println("Entering try statement");

      // creating a new file OutputFile.txt
      out = new PrintWriter(new FileWriter("OutputFile.txt"));

      // writing values from list array to Output.txt
      for (int i = 0; i < 7; i++) {
        out.println("Value at: " + i + " = " + list[i]);
      }
    }
    
    catch (Exception e) {
      System.out.println("Exception => " + e.getMessage());
    }
    
    finally {
      // checking if PrintWriter has been opened
      if (out != null) {
        System.out.println("Closing PrintWriter");
        // close PrintWriter
        out.close();
      }
      
      else {
        System.out.println("PrintWriter not open");
      }
    }

  }
}

class Main {
  public static void main(String[] args) {
    ListOfNumbers list = new ListOfNumbers();
    list.writeList();
  }
}

출력

Entering try statement
Exception => Index 5 out of bounds for length 5
Closing PrintWriter

위의 예에서 list라는 배열을 만들었습니다. 및 output.txt라는 파일 . 여기서는 배열에서 데이터를 읽고 파일에 저장하려고 합니다.

코드를 확인하세요.

for (int i = 0; i < 7; i++) {
  out.println("Value at: " + i + " = " + list[i]);
}

여기서 배열의 크기는 5입니다. 배열의 마지막 요소는 list[4]에 있습니다. . 그러나 a[5]의 요소에 액세스하려고 합니다. 및 a[6] .

따라서 코드는 catch 블록에 의해 catch되는 예외를 생성합니다.

finally 이후 블록은 항상 실행되므로 PrintWriter을 닫는 코드가 포함되어 있습니다. finally 블록 내부.

파일 닫기 또는 연결과 같은 중요한 정리 코드를 포함하려면 finally 블록을 사용하는 것이 좋습니다.

참고 :finally 블록이 실행되지 않음:

<시간>

다중 캐치 블록

try에 대해 블록에는 0개 이상의 catch이 있을 수 있습니다. 블록. 여러 catch 블록을 사용하면 각 예외를 다르게 처리할 수 있습니다.

catch의 인수 유형 블록은 처리할 수 있는 예외 유형을 나타냅니다. 예를 들어,

class ListOfNumbers {
  public int[] arr = new int[10];

  public void writeList() {

    try {
      arr[10] = 11;
    }
    
    catch (NumberFormatException e1) {
      System.out.println("NumberFormatException => " + e1.getMessage());
    }
    
    catch (IndexOutOfBoundsException e2) {
      System.out.println("IndexOutOfBoundsException => " + e2.getMessage());
    }

  }
}

class Main {
  public static void main(String[] args) {
    ListOfNumbers list = new ListOfNumbers();
    list.writeList();
  }
}

출력

IndexOutOfBoundsException => Index 10 out of bounds for length 10

이 예에서는 arr이라는 정수 배열을 만들었습니다. 10 크기 .

배열 인덱스가 0부터 시작하기 때문에 , 배열의 마지막 요소는 arr[9]에 있습니다. . 진술을 주목하십시오.

arr[10] = 11;

여기에서 인덱스 10에 값을 할당하려고 합니다. . 따라서 IndexOutOfBoundException 발생합니다.

try에서 예외가 발생한 경우 차단,

<시간>

여러 예외 잡기

Java SE 7 이상에서는 이제 하나의 catch로 두 가지 이상의 예외 유형을 잡을 수 있습니다. 차단합니다.

이는 코드 중복을 줄이고 코드 단순성과 효율성을 높입니다.

catch에서 처리할 수 있는 각 예외 유형 블록은 세로 막대 |를 사용하여 구분됩니다. .

구문은 다음과 같습니다.

try {
  // code
} catch (ExceptionType1 | Exceptiontype2 ex) { 
  // catch block
}

자세한 내용은 Java catch multiple exceptions을 참조하십시오.

<시간>

자바 자원을 사용한 시도 문

자원으로 시도 문은 하나 이상의 리소스 선언이 있는 try 문입니다.

구문은 다음과 같습니다.

try (resource declaration) {
  // use of the resource
} catch (ExceptionType e1) {
  // catch block
}

리소스는 프로그램이 끝날 때 닫을 개체입니다. try 문에서 선언하고 초기화해야 합니다.

예를 들어보겠습니다.

try (PrintWriter out = new PrintWriter(new FileWriter("OutputFile.txt")) {
  // use of the resource
}

자원으로 시도 명령문은 자동 리소스 관리라고도 합니다. . 이 명령문은 명령문 끝에 있는 모든 리소스를 자동으로 닫습니다.

자세히 알아보려면 java try-with-resources 문을 방문하세요.


java

  1. 자바 연산자
  2. 자바 주석
  3. 자바 for-each 루프
  4. 자바 문자열
  5. 자바 인터페이스
  6. 자바 익명 클래스
  7. 자바 예외 처리
  8. Java catch 다중 예외
  9. 자바 리소스 사용
  10. 자바 주석