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

Java 개발을 위한 예외전가(Exception Throws)

by 이엘리야 2023. 9. 17.

안녕하세요.

이번 포스팅에서는 예외전가(Exception Throws)에 대해 알아보겠습니다.

 

예외전가는 각 책별로 다른 말로 표현하는데

예외 던지기, 예외 떠넘기기 등 다양한 이름으로 표현할 수 있습니다.

예외전가는

말 그대로 예외 처리의 책임을 메서드를 호출한 곳으로 넘기는 것

을 말하며

 

사용 방법은

메소드 정의 뒤에, throws를 작성하고 예외 클래스를 나열하면 됩니다.

접근지정자 반환타입 메소드명(매개변수...) throws 예외클래스1, 예외클래스2 {
	...
}

이렇게 사용되게 되며

 

예제를 보도록 하겠습니다.

이 예제를 예로 들면

한자리 수 정수를 입력받아 

그 값을 ASCII로 반환받아 48을 빼서 한자리 수를

그대로 출력하는 프로그램입니다

 

이렇게 사용할 경우 System.in.read()에 빨간 에러가 발생한 것을 볼 수 있는데

마우스를 올려보도록 하겠습니다.

처리되지 않은 예외 유형 IOException이라고 예외가 발생하는 것을 볼 수 있습니다.

이때 두 가지 해결책이 있는데 이 구문을 try ~ catch 문으로 묶는 방법

또 하나는 add throws declaration 즉 예외 전가 처리를 하는 방법이 있습니다.

 

저 부분에서 에러가 발생하는 이유는

System.in.read() 메서드가 실행되는 동안 어떤 형태의 입력/출력 오류가 발생하는 경우

메소드가 실행되는 동안 스트림이 끝나거나 종료되는 경우에 발생하므로

컴파일 시 자동으로 빨간 오류를 띄워줌으로써 실행을 방지하고 있습니다.

 

이제 add throws declaration 또는 직접 작성하여 예외 전가를 해보도록 하겠습니다.

그럼 IOException이 import 도심가 동시에 main 메서드 옆에

throws IOException 이 붙은 걸 알 수 있습니다.

 

이 경우 예외가 발생하게 되면

IOException으로 예외처리를 보내게 되며

 

그렇지 않을 경우 정상적으로 프로그램이 실행되게 됩니다.

 

결괏값을 보도록 하겠습니다.

정상적으로 실행되는 것을 볼 수 있습니다.

 

이 외에도 파일 입출력 관련된 객체를 사용할 때 발생하기도 하며

예외전가를 사용하는 이유는 코드의 가독성

적절한 예외처리

재사용성용이를

위하여 예외 전가를 사용하게 됩니다.

 

이렇게 간단하게 예외전가에 대해 알아봤는데

이해가 좀 되시나요?

 

이해가 되지 않는 부분은 댓글을 

남겨주시면 답변 달아 드리도록 하겠습니다.

 

다음 포스팅은 예외 강제발생과 사용자 정의 예외 클래스

두 가지를 묶어서 보도록 하겠습니다.

 

감사합니다 :)