티스토리 뷰
자바에서 예외를 처리하는 방법 중에서, 저번에는 throw를 정리한 적이 있다.
간단하게 정리해보자면,
throw new 예외명(); 으로, 강제로 개발자가 예외를 발생시키는 것이다.
어쨌든 이번 포스팅에서는 throws 키워드에 대해서 정리해보도록 하겠다.
---------------------------
이 throws 키워드의 의미에 대해서 간단하게 말해보자면,
호출한 부분에서 예외를 처리하도록 시키기! 이다.
( throws 키워드는 메서드 내부에 사용하는 것이 아닌, 메서드명 뒤에 사용한다. )
예시를 통해서 이해해보도록하자.
예시 ↓ )
package main;
public class Application {
public static void main(String[] args) {
TestClassForCustomException test = new TestClassForCustomException();
try {
System.out.println(test.add("asdf", "2"));
} catch (NumberFormatException e) {
System.out.println(e.getMessage());
}
}
}
class TestClassForCustomException {
public Integer add(String str1, String str2) throws NumberFormatException {
Integer result = Integer.parseInt(str1) + Integer.parseInt(str2);
return result;
}
}

이 코드의 add 메서드를 보면, NumberFormatException 예외를 지정해놓았다.
add 메서드에서는 예외가 발생한다 ( String을 Integer로 파싱해야하는데, "asdf"는 Integer로 파싱할 수 없기 때문 ).
이에, add 메서드에서 발생한 NumberFormatException을 add 메서드를 호출한 main 메서드에서 예외를 처리하도록 설계한 것이다.
( 즉, 예외가 발생한 메서드에서 예외처리를 하는 것이 아닌, 해당 메서드를 호출한 곳에서 예외를 처리하도록 하는 것! )
여기서 난 궁금증이 들었다.
"만약, throws로 지정하지 않은 다른 예외가 해당 메서드에서 발생하면, 어디서 예외처리를 하게될까?"
이에 대해 찾아보니, 어떤 예외가 발생하더라도 throws키워드가 붙은 메서드는 해당 메서드를 호출한 곳에서 예외를 처리하게 된다고 하더라.
( 정확한 이유는 잘모르겠다... 자바 예외들의 상속 관계(?) 개념을 이해해야할 것 같다.... )
--------------------------------------------
오늘은 여기까지.
'Java' 카테고리의 다른 글
| 자바 - 커스텀 예외 만들기 (0) | 2025.11.01 |
|---|---|
| 자바 - enum 정리 ( enum 개념 및 예제, enum 매핑 활용 예제 ) (0) | 2025.10.30 |
| 자바 - super, super() 정리, 활용 예제 (0) | 2025.10.27 |
| 자바 - 추상 클래스 개념 정리 (2) | 2025.10.17 |
| 자바 - Checked Exception과 Unchecked Exception 에 대한 오해 (0) | 2025.10.12 |