Error

[Error] unreported exception IOException; must be caught or declared to be thrown

Wonol 2022. 8. 14. 11:55
반응형

개발을 완료하고 컴파일을 하던 도중 아래와 같은 에러 메시지가 나오면서 컴파일이 되지 못하였다.

error: unreported exception IOException; must be caught or declared to be thrown throw new IOException("IOException 발생");

간단하게 나마 번역해보면, throw new IOException 은 보고되지 않은 예외 이다.

해결하기 위해 실제 개발 코드는 아니지만 간단하게 예제를 통해 정리하고자 한다.


1. 에러 발생 원인

public void test(){
    String text = "";

    if(text == null || text.isEmpty()) {
        throw new IOException("IOException 발생");
     }
 }

- Java(자바)에서는 예외 중 어떤 예외에 대해서는 개발자가 해당 예외를 처리하도록 강요하고 있습니다. 

- 대표적으로 IOException 이 있고, 간단하게나마 위 코드와 같은 경우입니다.(NPE는 아닙니다.)

- 여기를 통해 IOException 은 개발자가 처리가 필요하고, NPE 는 개발자가 처리 안해도 되는지 참고하시면 됩니다.

 

구름EDU - 모두를 위한 맞춤형 IT교육

구름EDU는 모두를 위한 맞춤형 IT교육 플랫폼입니다. 개인/학교/기업 및 기관 별 최적화된 IT교육 솔루션을 경험해보세요. 기초부터 실무 프로그래밍 교육, 전국 초중고/대학교 온라인 강의, 기업/

edu.goorm.io

2. 해결

- 해결 방법으로는 try-catch 문 또는 throws 하여 메서드 선언부에 던지는 방법이 있습니다.

2-1. try-catch

public void test(){
    String text = "";

    if(text == null || text.isEmpty()) {
        try {
            throw new IOException("IOException 발생");
        } catch (IOException e) {
            //  에러 처리
            System.err.println("여기서 에러 처리");
        }
    }
}

2-2. throws

public void test() throws IOException {

    String text = "";

    if(text == null || text.isEmpty()) {
        throw new IOException("IOException 발생");
    }
}

3. 번외

- 물론 최근에는 대부분 인텔리제이를 통해서 개발을 하다 보니, 컴파일 이전에 이러한 상황이 있을 경우 빨간 물결(~)로 안내해주고 있고, 해당 부분에 마우스를 옮기면 해결 내용이 나오면서 수정할 수 있습니다.


참고

- https://edu.goorm.io/learn/lecture/41/%EB%B0%94%EB%A1%9C%EC%8B%A4%EC%8A%B5-%EC%83%9D%ED%99%9C%EC%BD%94%EB%94%A9-%EC%9E%90%EB%B0%94-java/lesson/39411/%EC%98%88%EC%99%B8%EC%9D%98-%EC%84%A0%EC%A1%B0-throwable

- https://imasoftwareengineer.tistory.com/89

반응형