Spring Batch 기반의 배치 작업을 수행하던 중 다음과 같은 예외가 발생했습니다.
com.sample.common.exception.CustomException: 테스트용 오류 발생 예시입니다.
at com.sample.batch.job.ExampleJob.lambda$1(ExampleJob.java:174)
...
at com.sample.SampleBatchApplication.main(SampleBatchApplication.java:118)
해당 Stack Trace를 보면 ExampleJob.lambda$1
메서드에서 CustomException
이 발생했으며, 이 예외는 Spring Batch 내부 프로세스를 거쳐 main()
메서드까지 전파되었습니다.
이를 이해하기 위해 다음과 같은 예외 전달 순서를 주목할 수 있습니다:
- 예외 발생 지점:
ExampleJob.lambda$1
- Batch 처리 흐름:
TaskletStep
,SimpleJobLauncher
,JobLauncherApplicationRunner
등을 순차적으로 거침 - Spring Boot 처리 흐름:
SpringApplication.callRunners
→SpringApplication.run
- 최종 전달:
SampleBatchApplication.main
즉, Stack Trace는 예외가 발생한 지점에서 시작하여 호출 계층을 거쳐 상위 메서드로 전파된 순서를 보여주는 구조입니다.
결과적으로 Stack Trace에서 가장 위에 있는 메서드가 가장 나중에 실행된 것이고, 가장 아래에 있는 메서드가 최초의 예외 발생 지점입니다.
이러한 이해는 Spring Batch 또는 Spring Boot 기반 애플리케이션에서 오류를 디버깅할 때 매우 중요합니다.