{Java}
21.08.04{코딩일기} 빨간에러쥬르륵 java StackOverflowError 해결
Davey
2021. 8. 4. 23:17
728x90
내가 만든 게임 발표20분 직전 갑자기
특정 객체를 실행시키자마자
StackOverflowError 에러가 길게 떴다.
init()을 시도하면 빨간줄이 수십줄...
# 사건정의
다시봐도 심장쫄깃하다..
이게 만약 내가 CTO이고
신규게임 론칭 발표당일직전
벌어진 에러라면 미친다..
일단 문제원인부터 말하자면
부모Ground클래스에 생성된 자식클래스 ArcadeStoneMountain객체 호출이 원인이었다.
부모클래스에서는 자식클래스를 호출할 수 없는게 원칙
그래서 해당 호출을 종료시켜줘야했으나
그러지 못했기 때문에 벌어진 헤프닝.
# 문제정의
검색해서 찾아보니 StackOverflowError 에러는 재귀호출 에러였는데,
예를들면 ArcadeGround 클래스를 호출하는 ArcadeStoneMountain클래스 객체를
public ArcadeStoneMountain stm = new ArcadeStoneMountain();
위와같이 ArcadeGround클래스에 생성했더니 재귀호출 에러가 발생했다.
# 문제원인
Ground클래스에서 ArcadeStoneMountain을
사용하는 메소드가 전무했고,
나는 그냥 호출만 하도록
인스턴스만 생성한 상태여서
에러가 발생했다.
# 문제해결
ArcadeStoneMountain의 부모클래스 ArcadeGround가 아닌,
다른 자식ArcadeDesert 클래스에
public ArcadeStoneMountain stm = new ArcadeStoneMountain();
위와같이 동일한 코드를 입력하고 객체를 호출했을땐 아무 문제가 없었다.
그래서 우선 ArcadeGround에선 ArcadeStoneMountain클래스 내부 메소드가
사용할 필요가 없기때문에 코드를 삭제했더니
아주 정상적으로 잘 작동했다.
Copyright ⓒ 2021 by bluevulpe All Contents cannot be copied without permission.
728x90