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()를 사용하는게 편리합니다
'개발 공부 > Java' 카테고리의 다른 글
[자바다] 클래스, 객체, 인스턴스란 무엇일까? 각 개념의 차이점 (0) | 2022.09.19 |
---|---|
[자바다] 윈도우와 맥에서의 캐리지리턴(\r), 라인피드(\n) (0) | 2022.09.15 |
[자바다] next() 와 nextLine()의 차이점 (0) | 2022.08.22 |
[자바다] public type must be defined in own file (0) | 2022.08.16 |
[자바다] static 정적 변수와 final 필드 그리고 싱글톤 선언하는 법 (0) | 2022.08.16 |
댓글