private void handleException(Message message, Object param,
CommandHandler commandHandler,
Throwable cause,
Map<String, String> pathVars,
Optional<String> defaultReplyChannel) {
Optional<CommandExceptionHandler> m = commandHandlers.findExceptionHandler(cause);
logger.info("Handler for {} is {}", cause.getClass(), m);
if (m.isPresent()) {
List<Message> replies = m.get().invoke(cause);
publish(correlationHeaders(message.getHeaders()), replies, defaultReplyChannel);
} else {
List<Message> replies = singletonList(MessageBuilder.withPayload(JSonMapper.toJson(new Failure())).build());
publish(correlationHeaders(message.getHeaders()), replies, defaultReplyChannel);
}
}