자바 디버깅 로그# 메소드 호출 시 스택오버플로우 발생

codepark_kr·2020년 5월 17일
0

Java-디버깅편

목록 보기
1/1
post-thumbnail

이거 하나 때문에 1시간을 헤맸다. ㅋㅋ아놔
해결법은 아주 간단하다:

  1. 메소드 호출시 스택오버플로우 발생

    1-1. 구현하고자 했던 것:
    파라미터를 포함한 기능 메소드의 리턴값을 메인 클래스에서 출력하기

    1-2. 내가 작성했던 코드:

    1-3. 결과:
    1-4. 해결 방법:

    1-5. 수정 후 결과:

    1-6. 원인: 고쳐놓고 보니 어이가 없다. ㅋㅋㅋㅋㅋㅋㅋㅋ
    기능 메소드 public int sum(int a, int b) 내부에 System.out.println("합: "+sum(a, b)); 같은 것이 떡하니 들어있으니 이러한 문제가 생긴 것이다. 아직 sum이라는 기능 메소드가 완성되지 않았는데, 그 안에 sum의 결과 값을 출력하라는 말도 안 되는 코드를 집어 넣었던 것. 따라서 각 기능 메소드 안에 작성했던 출력 구문을 지우거나 주석 처리하면 바로 올바르게 실행된다.

profile
아! 응애에요!

2개의 댓글

comment-user-thumbnail
2020년 5월 18일

우연히 지나가다가 보고.. 들렸습니다 .^^;;

[sum이라는 기능 메소드가 완성되지 않았는데, 그 안에 sum의 결과 값을 출력하라는 말도 안 되는 코드]
라고 언급하신 부분에 조금 오해가 있으신듯 하여.. 의견을 드립니다.

일단
처음 sum() 을 호출하면
System.out.println() 에서 또 sum()을 호출하는데.. 이렇게 되면 계속 계속 sum()을 호출하면서 sum() 을 무한대로 호출하게 되는 형태인데요... 이렇게 되면 메서드의 호출순서를 저장하는 stack이라는 공간이 꽉 차서 발생하는 오류입니다.

관련해서 개념으로 "재귀호출" 이라는 프로그래밍 방법이 있으니 참고하시면 원인 확인에 도움이 되실겁니다. ^^

1개의 답글