티스토리 뷰
Java
자바 - 가능한 모든 경로에는 return 문을 작성해줘야함!!!!!! (Missing return statement)
Kodong's blog 2025. 9. 25. 08:01나는 체스게임 프로젝트를 하던 중, "Missing return statement" 라는 에러가 떳다.
해결방법은 간단하다. 그냥 모든 경로에 return 문을 작성해줘야한다.
문제를 만난 코드를 복붙하고 싶지만, 해당 코드가 너무길어서 그냥 해결한 코드를 아주 줄여서 붙여보도록 하겠다.
public boolean isSurrounded(String pieceType) {
boolean result;
switch (pieceType) {
case "King":
case "Queen":
result = check8(); // ↖ ↑ ↗ ← → ↙ ↓ ↘
break;
case "Rook":
result = check4(); // ↑ ← → ↓
break;
case "Knight":
result = checkKnight();
break;
case "Bishop":
result = checkDiag(); // 대각 4방
break;
default:
throw new IllegalArgumentException("Unknown piece: " + pieceType);
}
return result;
}
이 코드에서는 도달가능한 모든 경로에 return문을 넣어주었다.
하지만, 나는 switch구문이 끝났을 때, return 문을 적지 않았다.
왜냐하면, 내가 만든 코드에서는 반드시 switch구문 내에 있는 case에서 어떤 로직을 처리한 다음, return하도록 짜놓았기 때문이다.
간단하게 말해서, 내가 짠 코드는 switch구문을 이후의 로직은 실행되지 않고, 반드시 switch 구문 내에서 return을 하는 형태였다.
그렇기에 난 switch구문 아래 코드는 생각하지 않았고, 이에 따라서 return 적지 않았다.
하지만, 컴파일러는 switch구문 아래 코드에도 갈 수 있기 때문에, "Missing return statement"에러를 띄우는 것이다.
해결방법은 위에서도 말했지만, 말그대로
자신이 도달하지 않도록 설정된 경로(코드?)라도 도달가능한 코드가 있다면 반드시 해당 경로에도 return을 처리해주자.
쉽게 말해, 도달가능한 모든 경로에는 return문을 작성해주자.
오늘은 여기까지...
----------------------------------
체스 게임만들기 너무 어렵다 ㅋㅋㅋ
특히 어떤 piece를 특정 위치에 놓았을때, 해당 위치에 놓을 수 있는지 판별하는 로직에서 머리가 너무 아프다....
'Java' 카테고리의 다른 글
| 자바 - 배열 선언방법 총정리! ( 헷갈려서 정리함!!! ) (2) | 2025.10.06 |
|---|---|
| 자바 - 모든 경로에 return 있어야함(2)(System.exit(); 이후에도 return 해줘야한다!! ) (0) | 2025.10.01 |
| 자바 - Switch Expression 정리 (1) | 2025.09.17 |
| 자바 - 바인딩(Binding)에 대해서 알아보기......... ( 정적 바인딩(Static Binding)과 동적 바인딩(Dynamic Binding) ) (0) | 2025.09.13 |
| 자바 - 정적 초기화 블록, 인스턴스 초기화 블록 (1) | 2025.09.11 |