본문 바로가기
개발 공부/Java

[자바다] printStackTrace(), toString(), getMessage() 의 차이점!

by 반달bear 2022. 9. 15.
반응형

 

printStackTrace(), toString(), getMessage()는 모두 에러가 왜 발생하였는지를 보여준다는 공통점이 있습니다. 그런데 try/catch문에서 printStackTrace()를 사용하기도 하고 getMessage()를 사용하기도 하죠! 그 이유는 제목에 기술한 순서대로 상세함이 다르다고 할 수 있습니다. (상세함에 따른 시간 소모도 차이점이라고 할 수 있겠고 코드를 짤 때의 복잡도도 다릅니다)

 

printStackTrace() 제일 상세함 >>>>>>toString() 에러 출력만 해줌 >> getMessage() 간단하게 출력

 

직접 예제를 보면 이해가 쉽습니다.

 

printStackTrace()를 사용한 경우

printStackTrace()는 위와 같이 어디서 에러가 나는지 어떤 이유로 에러가 나는지를 굉장히 상세하게 보여줘서 나 홀로 코딩할때는 printStackTrace()를 사용하는게 편리합니다. 코드 자체도 System.out.print를 사용할 필요없이 

try { } catch(Exception e) { e.printStackTrace();} 

이런식으로 e.printStackTrace() 입력으로 출력까지 되기에 대부분의 경우 printStackTrace()를 사용합니다.

 

 

 toString() getMessage()를 사용한 경우

 

위 java.lang.NumberFormatException 이렇게 출력되어 있는 메세지가 toString()를 사용한 예제이고 아래의 input string : "apple"로 출력되어 있는 메세지는 getMessage()를 사용한 예제입니다.

 

둘 다 System.out.println(e.toString()), System.out.println(e.getMessage())처럼 출력문을 따로 적어줘야 하는 공통점이 있지만 toString()은 어떤 패키지에서 어떤 예외가 발생하는지까지 보여준다는 차이가 있습니다.

try/catch문에서 정확히 어떤 이름의 예외가 발생하는지를 알고 싶다면 toString. 그도 필요없다! 나는 간단하고 깔끔하게 에러 메세지 출력만 해주면 된다! 하시면 getMessage()를 사용하는게 편리합니다

반응형

댓글