Chunk listeners are not designed to throw exceptions. Exceptions must be handled in the implementation or the step will terminate. This is mentioned in the javadoc of TerminateOnExceptionChunkListenerDelegate, but this class is private.
The section about ChunkListeners in the reference documentation should be updated with this important detail.
References: