CodeGym /Java Blog /무작위의 /Java에서 도달할 수 없는 명령문 코드 오류
John Squirrels
레벨 41
San Francisco

Java에서 도달할 수 없는 명령문 코드 오류

무작위의 그룹에 게시되었습니다
연결할 수 없는 코드 문은 Java 초보자 사이에서 일반적인 문제입니다. 많은 초보 개발자가 이 오류를 또 다른 Java 관련 현상인 "죽은 코드"와 혼동합니다. 이 둘은 표현에 의해 비슷하지만 이 게시물에서 다룰 몇 가지 차이점이 있습니다. 그 외에 컴파일러가 도달할 수 없는 코드 명령문을 반환하는 가장 일반적인 이유가 무엇인지 알아보고 코드를 다시 시작하고 실행하기 위한 몇 가지 쉬운 수정 사항을 찾을 수 있습니다.

도달할 수 없는 코드란 무엇입니까?

정의에 따라 도달할 수 없는 문은 배포 준비가 된 코드를 실행할 때 컴파일러에서 실행되지 않는 문입니다. 연결할 수 없는 코드 반환 문은 일반적으로 프로그램 내의 논리적 오류를 나타내는 신호입니다. 이러한 진술로 끝나는 데에는 몇 가지 이유가 있지만 모든 경우에 도달할 수 없는 코드는 중복되고 프로그램을 어지럽히므로 어떤 대가를 치르더라도 피해야 합니다.

도달할 수 없는 코드와 데드 코드

개발 커뮤니티에서 "도달할 수 없는" 코드와 "죽은" 코드의 개념은 실질적으로 동의어입니다. 그러나 문서를 읽을 때 까다롭다면 개발 지침에서 종종 두 가지를 별도로 언급하는 것을 볼 수 있습니다. 죽은 코드와 도달할 수 없는 코드 간에 차이가 있습니까? 기본적으로 두 오류의 차이점은 컴파일러가 오류에 반응하는 방식입니다. 컴파일러에 입력한 코드에 도달 할 수 없는 경우 Java 알림에 컴파일 런타임 오류가 표시됩니다. 문이 " 죽은 코드 "인 경우 런타임 오류가 발생하지 않습니다. 개발자는 다음과 같은 시스템 경고를 받게 됩니다.

class DeadCode {
    void deadcode_Method(boolean b) {
    System.out.println("Reachable statement");
        if(true) {
        return;
        }
    System.out.println("Unreachable statement"); // dead code
    }
}
죽은 코드의 경우 직접적인 컴파일러 오류가 없기 때문에 감지하기가 더 어렵습니다. 그러나 System.out.printIn 반환을 주의 깊게 추적하면 죽은 코드를 잡아도 문제가 발생하지 않습니다.

도달할 수 없는 코드 문이 나타나는 이유

좋은 소식은 도달할 수 없는 코드 문제의 원인을 쉽게 추적할 수 있다는 것입니다. 컴파일러가 계속 오류를 반환하는 세 가지 주요 이유가 있습니다.
  • 양도 명세서. return 문으로 코드를 중단하면 "return = true" 이후에는 아무 것도 실행되지 않습니다.
  • 무한 루프 - 시스템이 루프 작업을 계속 반복하므로 무한 루프 이후에 작성한 코드는 실행되지 않습니다. 따라서 코드를 바이트 코드로 변환할 때 컴파일러는 연결할 수 없는 코드 오류를 보냅니다.
이러한 문제에 플래그를 지정하고 수정하는 데 도움이 되도록 확대해 보겠습니다.

반환 문

return 문은 Transfer 키워드 그룹의 일부로, 메서드를 종료한다는 의미입니다. 함수를 분리하는 데 유용하고 코드를 읽기 쉽고 깔끔하게 유지하는 데 도움이 됩니다. 그러나 return = true 이후에는 함수에 새 문을 추가할 수 없으므로 키워드 이후에 함수를 계속하려고 하면 "연결할 수 없는 코드" 컴파일러 오류가 발생합니다. "return = true" 잘못된 처리의 예와 컴파일러가 이에 반응하는 방식을 살펴보겠습니다.

class GFG {
    public static void main(String args[])
    {
  
        System.out.println("My code will run");
  
        return;
  
        // ironically, this code will never run
        // here’s an unreachable code message a developer gets.
        System.out.println("My code will run");
    }
}
반환 문 오용이 컴파일러에 표시되는 방법은 다음과 같습니다.

prog.java:11: error: unreachable statement
System.out.println(“My code will run”);
^
1 error
배운 내용을 보강하려면 Java 과정에서 비디오 강의를 시청하는 것이 좋습니다.

Break 문

Break 문은 Java 함수를 작성할 때 주의해야 하는 또 다른 유형의 키워드입니다. 정의에 따르면 break 키워드는 루프를 종료하는 데 사용됩니다. 아래 예에서 개발자가 루프를 종료하면 더 이상 8행의 명령문을 실행할 수 없으므로 컴파일러는 도달할 수 없는 명령문 오류를 표시합니다. 다음은 연결할 수 없는 코드 문을 생성하는 샘플 코드입니다.

public class JavaCodeGeeks
     {
    public static void main(String[] args) {
     for(int i=1;i<5;i++)
        {
        System.out.println(i);
        break;
        System.out.println("Code after break");
        }
    }
}
컴파일러 관점에서 오류를 보면 다음과 같은 오류 문이 표시됩니다.

JavaCodeGeeks.java:8: error: unreachable statement
System.out.println("After break");
                ^
1 error

계속 진술

Continue는 작업을 반복하는 데 사용되는 루프 제어 키워드입니다. 루프 실행을 처음부터 자체적으로 시작하려면 코드에 continue를 추가하십시오. 이 명령문은 개발자가 반복하려는 루프의 명령문과 반복에 넣지 않을 명령문을 선택하는 데 유용합니다. continue는 사용하기 쉬운 키워드이지만 작동 방식을 완전히 이해하지 못하면 개발자가 "도달할 수 없는 코드" 함정에 빠지게 됩니다. continue를 만난 후 시스템은 루프를 반복하므로 키워드는 뒤에 오는 명령문에 도달할 수 없습니다. 다음과 같은 코드가 있습니다.

public class JavaIsFun
{
    public static void main(String[] args) {
        for(int i=0;i<8;i++)
        {
            System.out.println(i);
            if(i==5)
            {
                continue;
                System.out.println("Coding after continue");
            }
        }
    }
}
시스템은 "Coding after continue" 명령문을 실행하지 않습니다. 컴파일러가 이를 즉시 알려줍니다.

JavaIsFun.java:10: error: unreachable statement
                                System.out.println("Coding after continue");

무한 루프

"중단" 및 "계속" 키워드 사용 사례의 예와 유사한 시나리오는 무한 루프의 시나리오입니다. 무한 루프를 설계할 때 개발자는 실행 후 명령문이 없다는 점을 기억해야 합니다. 따라서 루프를 중단하지 않으면 이후에 작성된 모든 코드에 도달할 수 없습니다. 다음은 확인해야 할 무한 루프 잘못된 처리의 흥미로운 예입니다.

public class JavaCodeGym
{
    public static void main(String[] args) {
        while(true)
        {
            System.out.println("Hey there");
        }
        System.out.println("Nice to see you");
    }
}
오류가 어디에 숨어 있는지 추측할 수 있습니까? 코드를 실행하면 컴파일러가 즉시 이를 가리킬 것입니다.

//unreachable code statement compiler error
JavaCodeGym.java:10: error: unreachable statement
                System.out.println("Nice to see you");
‘
"Nice to see you" 이전에 무한 루프가 있기 때문에 명령문은 실행되지 않고 도달할 수 없는 코드 오류를 계속 반환합니다.

결론

도달할 수 없는 코드를 방지하려면 모든 시스템 문에 대한 흐름이 있는지 확인해야 합니다. 대부분의 Java 접근 불가 코드 문제는 키워드 처리 및 루프 관리 불량과 관련이 있습니다. 결국 코드를 ​​다시 확인하는 것이 도달할 수 없는 코드 실수를 방지하는 유일하고 검증된 방법입니다. 당신도 그들에게 실망해서는 안 됩니다. 유연한 Java 코드를 만드는 습관은 수년간의 경험과 연습을 통해 얻을 수 있습니다. 이제 IDE를 시작하고 멋진 소프트웨어 제품을 구축해 봅시다.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION