2022.09.20 - [Java] - [Java] 예외 처리의 이유와 종류
[Java] 예외 처리의 이유와 종류
🤗예외는 싫은데 예외 처리는 좋아요 Error와 같은 예외가 발생하는 경우 프로그램은 정상적으로 작동하기 어렵다. 대부분의 경우에서 예외는 프로그램이 정상적으로 동작하지 않기 때문에,
codari.tistory.com
💻 예외 처리 방법은 뭘까?
저번에는 예외 처리의 이유와 종류에 대해서 조금 알아봤다. 이번에는 예외를 처리하는 몇 가지 방식에 대해서 알아보려고 한다. 사실 몇 가지 방식이라고 얘기하기도 무안한 것이 try-catch문이 전부이기 때문이다. 또한, 자바의 try-catch문은 조건도 상당히 간단하다.
public class Handler {
public static void main(String[] args) {
try {
Thread.sleep(1000);
System.out.println("스레드가 동작합니다.");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
위와 같이 try 구문에는 정상 작동할 시 처리할 코드를, catch 구문에는 예외가 발생했을 때 처리할 코드를 작성해주면 된다. 해당 코드는 스레드를 1초에 한 번 씩 동작하는 코드고, InterruptedException 예외 클래스의 사용 조건은 스레드가 동작을 기다리는 메서드가 존재하는지 여부를 포함하고 있다. 여기서 Thread.sleep(1000); 코드가 존재하지 않는다면, 예외 처리 조건을 만족하지 못하여 컴파일 에러가 발생하게 된다.
또한, try-catch문은 여러 예외를 처리할 수 있게 다중 catch문도 지원한다.
public class Handler {
public static void main(String[] args) {
try {
int bunja = Integer.parseInt(args[0]);
int bunmo = Integer.parseInt(args[1]);
int result = bunja / bunmo;
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
} catch (ArithmeticException e) {
e.printStackTrace();
}
}
}
여러 종류의 예외가 발생할 것을 고려하여 catch문을 여러 개를 작성할 수 있고, 위의 예제 같은 경우에는 예외 발생 시, 같은 로직을 처리하기 때문에, catch문을 통합할 수 있다.
public class Handler {
public static void main(String[] args) {
try {
int bunja = Integer.parseInt(args[0]);
int bunmo = Integer.parseInt(args[1]);
int result = bunja / bunmo;
} catch (ArrayIndexOutOfBoundsException | ArithmeticException e) {
e.printStackTrace();
}
}
}
여기까지 자바의 예외 처리 구문의 활용법에 대해서 알아봤다. 하지만 예외 처리의 진짜 매력적인 파트는 다음 파트부터 볼 수 있다. 지금까지는 가만히 컴퓨터가 주는 에러를 처리했지만, 필요하다면 우리가 직접 에러를 발생시킬 수도 있기 때문이다. 해당 내용 관련해서는 다음에 포스팅을 진행하겠다.
'Java' 카테고리의 다른 글
[Java] Finally절 (1) | 2022.09.24 |
---|---|
[Java] 내가 예외를 '던지는' 법 (2) | 2022.09.22 |
[Java] 예외 처리의 이유와 종류 (2) | 2022.09.20 |
[Java] 자바의 데이터 타입 (0) | 2022.09.04 |
[Java] Covariant(공변성)에 관한 간단한 이야기 (0) | 2022.09.02 |