[Java] e.printStackTrace() VS e.getStackTrace()

jiwon·2024년 12월 2일

e.printStackTrace()와 e.getStackTrace()는 모두 예외가 발생했을 때 스택 트레이스를 출력하거나 가져오기 위해 사용한다.
하지만 사용 방식과 목적에 차이가 있는데 정리해보자.



1. 출력방식

  • e.printStackTrace() : 예외 정보를 System.err로 직접 출력.
  • e.getStackTrace() : StackTraceElement 배열을 반환하며 직접 출력하지 않음.

2. 사용 목적

  • e.printStackTrace() : 디버깅 목적으로 전체 스택 트레이스 출력.
  • e.getStackTrace() : 필요한 정보만 선택적으로 사용할 수 있어 효율적.


그렇다면 어떤 것을 사용해야 할까?

1. e.printStackTrace() 가 적합한 경우

-> 디버깅 목적으로 콘솔에서 빠르게 예외 정보를 보고 싶을 때
-> 간단한 테스트 프로그램에서만 사용


2. e.getStackTrace()가 적합한 경우

-> 프로덕션 환경 : 로그 파일에 스택 트레이스를 저장하거나, 사용자에게는 간단한 오류 메시지만 출력하고 서버 트레이스는 서버에서 수집할 때
-> 스택 트레이스를 분석하거나, 특정 조건에 따라 출력 내용을 조작해야 할 때


e.printStackTrace()는 System.err로 쓰여지면서 제어가 힘들고, 리소스 비용이 비싸며 관리가 어렵다는 등의 단점때문에 실무에서는 대부분 e.getStackTrace()를 사용한다.

profile
내가 보려고 올리는 개발 일지

0개의 댓글