# A runner throws: exit code, log, events, and the runners that never ran --- three ordered runners, the second throws (non-web, in a separate JVM) --- TRACE ApplicationStartedEvent TRACE runner 1 ran TRACE runner 2 is about to throw TRACE ApplicationFailedEvent: java.lang.IllegalStateException: boom from runner 2 TRACE ContextClosedEvent (the context is shutting down) ERROR o.s.b.SpringApplication : Application run failed java.lang.IllegalStateException: boom from runner 2 process exit code: 1 --- a runner exception that implements ExitCodeGenerator --- ERROR o.s.b.SpringApplication : Application run failed com.ankurm.runners.failure.FailureApp$ExitWith42Exception: the data file is missing process exit code: 42 --- a runner that throws a checked exception (declared with throws Exception) --- ERROR o.s.b.SpringApplication : Application run failed java.lang.IllegalStateException: Failed to execute CommandLineRunner Caused by: java.io.IOException: cannot read data.csv process exit code: 1