본문 바로가기
Web

[Java] throws

by DuncanKim 2022. 7. 17.
728x90

[Java] throws

니 지금 내한테 던지기 하는기가?

 

메서드 안에서 예외가 발생할 수 있는 코드를 작성할 때, try-catch 블록으로 예외를 처리하는 것이 기본이지만, 경우에 따라서는 그 메서드를 호출할 곳에서 예외를 처리하도록 예외를 떠넘길 수도 있다. 이때 사용하는 것이 throws이다. throws 뒤에는 쉼표로 구분하여 처리해야 하는 예외 클래스를 병기할 수도 있다.

 

public void method1() throws Exception{
}

 

이제 method1()은 예외를 자기 자신이 책임지지 않는, 아주 무책임한 메소드가 되었다.

이런 무책임한 메소드를 부른 method2()는 다음과 같은 행위를 해야 한다.

 

public void method2(){
    try{
        method1();
    catch(Exception e) {

    }

}

method2()에서는 반드시 method1()에서 던진 예외를 catch문 안에 써주어야 한다. 

 

이러한 throws는 왜 있는가라고 하면, 코드가 여러 개가 있을 때, 여기저기에서 예외를 해결하려고 하면, 중복된 예외 구문들이 많아질 수 있다. 어차피 호출부에서 예외처리를 할 것이라면, 한 번에 예외를 처리하는 것이 나을 때가 있다.

 

예를 들어, method2()가 method1()만 부르는 것이 아니라, 예외처리가 필요한 3, 4, 5를 전부 부르는 형태라면?

3, 4, 5에서 각각 처리하는 것은 코드를 짜는 것도 불편할 뿐더러, 어디에서 예외가 발생하고 있는지 찾는 것도 일이 될 것이다.

하나로 모아놓고 처리를 하는 것이 더 효율적인 방법이 될 수도 있는 것이다.

 

그렇기 때문에 던지기가 존재한다.

 

만슥이가 했던 던지기는 범죄행위였지만, 자바에서 일어나는 던지기는 우리에게 효과적인 코드 작성에 도움을 주는 아주 좋은 도구인 것이다.

728x90

댓글