파이썬에서 exception 처럼, 자바에서 예외의 상황을 차리 하기 위한 클래스가 있습니다.
https://blue-dot.tistory.com/28
우선 자바에서 예외를 알리기 위한 클래스가 다음과 같습니다.
java.lang.ArithmeticException | 수학 연산에서의 오류 상황을 의미하는 예외 클래스 |
java.util.InputMismatchException | 클래스 Scanner를 통한 값의 입력에서의 오류 상황을 의미하는 예외 클래스 |
예외의 처리를 위한 코드를 위한 예외 처리 메커니즘은 다음과 같습니다.
try {
...관찰 영역...
}
catch(ArithmeticException e) {
...처리 영역...
}
try 안의 값에서 예외가 발생하면 catch 영역에서 예외를 처리합니다.
즉 try 안의 예외 코드와 객체를 인수로 받아 그 처리를 담당하는 곳이 cathc 블록입니다.
package day16;
import java.util.Scanner;
public class Exception01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
System.out.println(4 / a);
}
}
만약 a의 값을 0 으로 스캔을 한다면 0으로 나눌 수는 없으니 값은 오류가 뜹니다.
이 때 예외처리를 해서 오류를 방지해야 합니다.
package day16;
import java.util.Scanner;
public class Exception01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
try {
int a = sc.nextInt();
System.out.println(4 / a);
}catch(ArithmeticException e) {
System.out.println(e);
}
}
}
예외가 발생하면 어떻게 처리하는지 과정을 기재한다면 다음과 같습니다.
try {
1. ...
2. 예외 발생 지점
3. ...
}
catch(Exception e) { 예외의 처리
...
}
4. 예외 처리 이후 실행 지점
즉 상기의 코딩과 같이 이것은 둘 이상의 예외를 처리할 때도 가능합니다.
try 구문 안에서 예외가 발생하면 바로 catch 로 넘어가고, catch 구문 실행 후 예외 처리 구문이 완전히 종료 됩니다.
try 구문 안에서 예외가 발생하지 않으면 try 구문 실행 후 예외 처리 구문이 완전히 종료 됩니다.
try 블록에서 예외가 발생한 이후 순차적으로 catch의 블록에서 해당 예외를 처리할 수 있는지 확인하고
내부 catch 블록에서 예외를 찾을 수 없다면 바깥의 try 의 catch 블록을 차례대로 검사합니다.
다음과 같은 예시를 볼게요.
각각의 예외의 경우에 따라 catch 를 중복으로 사용해서 처리할 수도 있으며, 또는 || 의 연산자로 처리하는 것 또한 가능합니다.
catch(ArithmeticException | InputMismatchException e) {
e.getMessage();
이렇게 예외의 경우에 따른 예외 처리를 방지하여 미리 작성할 수 있습니다.
'자바 > 자바 입문 공부일지' 카테고리의 다른 글
자바 기초 공부 일지 30. clone 메소드 (0) | 2022.11.01 |
---|---|
자바 기초 공부 일지 29. 자바 가상머신의 메모리 할당 (0) | 2022.11.01 |
자바 기초 공부 일지 27. 추상 클래스 (0) | 2022.10.31 |
자바 기초 공부 일지 26. 인터페이스interface , 구현implements (0) | 2022.10.31 |
자바 기초 공부 일지 25. Object 클래스, final 선언, @Override 오버 라이딩 (0) | 2022.10.31 |