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 된 예외가 주어진 유형인지 확인할 수 있습니다. 여기서는InputMismatchException
및ArithmeticException
의 두 가지 예외를 검토합니다.
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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn