본문 바로가기
개발언어/JAVA

Java 개발을 위한 다중Catch 멀티Catch 예외처리(Exception)

by 이엘리야 2023. 9. 17.

안녕하세요.

이번 포스팅은 저번 포스팅에 이어서

예외처리를 다뤄볼 예정입니다.

 

이번 포스팅은 Try Catch에서 다중 Catch와 멀티 Catch에 대해 알아보겠습니다.

 

말 그대로 Catch문을 여러 개 작성하는 것을 의미하며

이 경우 유의해야 하는 경우가 있습니다.

 

상위 예외 클래스가 하위 예외 클래스보다 아래에 위치해야 하는데

이 전 포스팅에서 다뤘던 예외 계층 구도

여기서 ArithmeticException이 발생했다면

try {
	....
} catch(AtithmeticException e) {
	....
} catch(Exception e) {
	....
}

이렇게 상위 예외 클래스인 Exception이 아래에 위치하도록 작성해 줘야 합니다.

 

바로 예제로 알아보도록 하겠습니다.

 

이 경우를 보게 되면 두 가지의 예외가 발생할 수 있는 경우입니다.

하나는 0으로 나머지 값을 나눴을 경우

다른 하나는 문자열을 입력해서 연산을 할 경우입니다.

전 포스팅에서 다뤘던 내용을 토대로 작성하였습니다.

이때 두 가지의 예외처리를 해줘야 하는데

Exception 만으로는 한 가지의 예외 처리만 가능하기 때문에

이럴 때 다중 Catch 또는 멀티 Catch를 사용하게 됩니다.

 

우서 다중 Catch를 통해서 예외처리를 진행해 보도록 하겠습니다.

이렇게 각 발생할 예외를 catch문에 작성하여 주면

해당 예외가 발생했을 때 그 Catch만 발생하여

해당 예외 처리를 진행해 줄 수 있습니다.

우선 0으로 나눴을 때 발생하는 ArithmeticException 결과를 보도록 하겠습니다.

이렇게 ArithmeticException 에러가 발생하여 예외처리가 진행된 것을 볼 수 있습니다.

하지만 여기서 문제는 같은 try문에 들어있는 다른 결과는 무시하고 Catch문이 실행되어

 예외처리 후 try문을 벗어나서 다음 줄에 있는 출력문이 실행된 것을 볼 수 있습니다.

 

다음 NumberFormatException의 경우도 보도록 하겠습니다.

이 경우에는 첫 ArithmeticException이 발생하지 않았기 때문에

a / c는 진행했지만 다음 NumberFormatException이 발생하여

Catch문이 실행된 것을 볼 수 있습니다.

이렇게 첫 try문에서 예외가 발생했을 경우에는 그다음까지 실행이 되지 않고

바로 예외처리 후 예외처리문을 빠져나가는 경우가 생기게 됩니다.

그렇기에 프로그램 로직 구성 시 예외가 발생할 부분을

체크하고 그 부분만을 예외처리해 주는 것을 추천하며

한 가지 처리에서 두 가지 예외가 발생하는 경우 이렇게 다중 Catch 및 멀티 Catch를 사용하는 것이

올바른 사용법입니다.

지금 로직은 두가지 처리에서 두가지 예외가 발생한 경우이기 때문에

이 경우에는 각각 예외처리문을 써주는 게 올바른 방법이 됩니다.

 

이번에는 멀티 Catch에 대해 알아보겠습니다.

다중 Catch와의 다른 점은 한  Catch문에 여러 개의 예외클래스를 넣고

그 후 마지막에 상위 예외 클래스를 써주는 방법입니다.

앞서 진행했던 예제를 바탕으로 작성해 보도록 하겠습니다.

이렇게 다중 Catch와는 비슷하지만

두 가지 예외 클래스를

| 기준으로 묶어 놓은걸 볼 수 있습니다.

 

이렇게 사용하게 되면 여러 개를 한 Catch문 안에서 사용할 수 있고

그 외의 예외를 상위 예외 클래스에서 처리할 수 있습니다.

 

간단하게 멀티 Catch와 다중 Catch에 대해 알아보았습니다.

 

더 궁금하시거나 이해가 안 되시는 부분은

댓글을 통해 남겨주시면

빠른 답변드리도록 하겠습니다.

 

다음 포스팅은 Try With Resoirces

AutoClose에 대해 포스팅하도록 하겠습니다.

 

감사합니다