Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 발생하는 도달 불가능한 코드(Unreachable Code) 오류의 원인과 해결 방법

Java에서 도달 불가능한 코드(unreachable code) 오류는 컴파일러가 판단하기에 특정 문장이 어떤 경우에도 절대 실행될 수 없을 때 발생하는 컴파일 오류입니다. 대표적인 원인으로는 종료 조건이 없는 무한 루프, return 문이나 throw 문보다 뒤에 위치한 코드 등이 있습니다.

오류 발생 예제

public class Demo{
   public static void main(String args[]){
      int val = 5;
      for (;;){
         if (val == 5){
            break;
            System.out.println("조건이 참이 아니라면 이 문장이 출력됩니다.");
         }
      }
   }
}

컴파일 결과

/Demo.java:11: error: unreachable statement
System.out.println("조건이 참이 아니라면 이 문장이 출력됩니다.");
^
1 error

오류 원인 분석

위 예제의 Demo 클래스에는 main 메서드가 정의되어 있으며, 변수 val에 5라는 값이 할당됩니다. 이후 조건식 없이 선언된 빈 for 루프, 즉 무한 루프가 실행되고, 루프 내부에서 val 값이 5인지 검사합니다.

문제는 if 블록 내부에 있습니다. 조건이 참이 되면 break 문이 실행되어 루프를 즉시 빠져나가는데, 그 바로 다음 줄에 있는 System.out.println() 문은 break가 실행된 시점 이후에는 어떤 상황에서도 실행될 수 없습니다. 자바 컴파일러는 컴파일 시점에 이러한 실행 불가능한 문장을 감지하여 "unreachable statement" 오류를 발생시킵니다.

도달 불가능한 코드가 자주 발생하는 사례

  • return 문 뒤에 작성된 코드
  • throw 문 뒤에 작성된 코드
  • break 또는 continue 문 뒤에 작성된 코드
  • 종료 조건이 없는 무한 루프 뒤에 위치한 코드

이 오류를 해결하려면 실행될 수 없는 문장을 삭제하거나, 코드의 실행 순서를 재배치하여 모든 문장이 실제로 도달 가능한 흐름 안에 포함되도록 수정해야 합니다.