Java에서 여러 예외 포착

Rupam Yadav 2023년10월12일
  1. Java에서 여러 Catch 문을 사용하여 여러 예외 포착
  2. Java에서instanceOf를 사용하여 여러 예외 포착
  3. |를 사용하여 캐치 블록에서 여러 예외 캐치 자바
Java에서 여러 예외 포착

오늘 우리는 Java에서 여러 예외를 사용하고 포착 할 수있는 방법을 살펴 보겠습니다. 런타임 중에 원하지 않는 이벤트가 발생하면 Java에서 예외가 발생합니다. 예외를 확인하는 가장 일반적인 방법은 try-catch 키워드를 사용하는 것입니다. 여기서try는 검사 할 코드 블록을 포함하고catch에는 예외 발생시 표시 할 코드가 있습니다.

다음 예제를 통해 단일 catch에서 여러 예외를 사용하는 세 가지 방법을 확인합니다.

Java에서 여러 Catch 문을 사용하여 여러 예외 포착

이 예에서는 사용자로부터 두 개의 int 유형 입력을 가져온 다음 나눈 결과를 표시합니다. 이 코드를try블록으로 묶었습니다. 이는catch블록도 있어야 함을 의미합니다.

입력 된 값이int유형이 아닌 경우InputMismatchException과 같이 여러 예외가 발생하고num2가 0으로 나눈 값이 없기 때문에ArithmeticException이 발생합니다. 다른 모든 예외의 부모 인Exception을 throw 할 수 있습니다.

이들을 모두 포착하기 위해 예외 유형과 함께 세 가지 다른catch블록을 작성하고 해당 예외가 발생하는시기를 표시하는 메시지를 인쇄합니다. 출력은 예외가없고 예외가있을 때 다른 결과를 보여줍니다.

import java.util.InputMismatchException;
import java.util.Scanner;

public class MultiExceptions {
  public static void main(String[] args) {
    System.out.println("Enter two numbers: ");
    Scanner sc = new Scanner(System.in);
    try {
      System.out.println("num1: ");
      int num1 = sc.nextInt();

      System.out.println("num2: ");
      int num2 = sc.nextInt();

      int dividedNum = num1 / num2;

      System.out.println("After division result: " + dividedNum);

    } catch (InputMismatchException e1) {
      System.out.println("Error! - Please enter a number.");
    } catch (ArithmeticException e2) {
      System.out.println("Error! - You cannot divide any number with 0");
    } catch (Exception e3) {
      System.out.println("An error occurred please try again!");
    }
  }
}

출력 1 :

Enter two numbers : num1 : 10 num2 : 2 After division result : 5

출력 2 :

Enter two numbers : num1 : 50 num2 : hhh Error !-Please enter a number.

출력 3 :

Enter two numbers : num1 : 10 num2 : 0 Error !-You cannot divide any number with 0

Java에서instanceOf를 사용하여 여러 예외 포착

할 수있는 또 다른 방법은 객체가 주어진 유형인지 아닌지를 확인하는instanceOf함수를 사용하는 것입니다. 부울 값을 반환합니다. 위와 동일한 예제를 사용하지만 여기서는 여러 if 문이있는 단일catch블록을 사용합니다.

위에서 설명했듯이Exception은 가장 일반적인 예외의 상위 클래스입니다. 객체를 사용하여 throw 된 예외가 주어진 유형인지 확인할 수 있습니다. 여기서는InputMismatchExceptionArithmeticException의 두 가지 예외를 검토합니다.

import java.util.InputMismatchException;
import java.util.Scanner;

public class MultiExceptions {
  public static void main(String[] args) {
    System.out.println("Enter two numbers: ");
    Scanner sc = new Scanner(System.in);
    try {
      System.out.println("num1: ");
      int num1 = sc.nextInt();

      System.out.println("num2: ");
      int num2 = sc.nextInt();

      int dividedNum = num1 / num2;

      System.out.println("After division result: " + dividedNum);

    } catch (Exception e) {
      if (e instanceof InputMismatchException) {
        System.out.println("Error! - Please enter a number.");
      } else if (e instanceof ArithmeticException) {
        System.out.println("Error! - You cannot divide any number with 0");
      } else {
        System.out.println("An error occurred please try again!");
      }
    }
  }
}

출력:

Enter two numbers: 
num1: 
d
Error! - Please enter a number.

|를 사용하여 캐치 블록에서 여러 예외 캐치 자바

Java 7 이상에서는 파이프 기호 또는bitwise OR를 사용하여 단일 catch에 여러 예외를 작성할 수 있습니다. 예제에서는 입력 된 두 숫자를 나눈 다음 두 예외 중 하나가 참인지 확인합니다. 사실이면 오류 메시지가 인쇄됩니다.

import java.util.InputMismatchException;
import java.util.Scanner;

public class MultiExceptions {
  public static void main(String[] args) {
    System.out.println("Enter two numbers: ");
    Scanner sc = new Scanner(System.in);
    try {
      System.out.println("num1: ");
      int num1 = sc.nextInt();

      System.out.println("num2: ");
      int num2 = sc.nextInt();

      int dividedNum = num1 / num2;

      System.out.println("After division result: " + dividedNum);

    } catch (InputMismatchException | ArithmeticException e) {
      System.out.println("An error occurred please try again");
    }
  }
}

출력:

Enter two numbers: 
num1: 
f
An error occurred please try again
작가: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

관련 문장 - Java Exception