diff --git a/spring-shell-core/src/main/java/org/springframework/shell/result/TerminalAwareResultHandler.java b/spring-shell-core/src/main/java/org/springframework/shell/result/TerminalAwareResultHandler.java index 40fb5689..8a12b4cd 100644 --- a/spring-shell-core/src/main/java/org/springframework/shell/result/TerminalAwareResultHandler.java +++ b/spring-shell-core/src/main/java/org/springframework/shell/result/TerminalAwareResultHandler.java @@ -27,7 +27,7 @@ import org.springframework.shell.ResultHandler; * * @author Eric Bottard */ -public abstract class TerminalAwareResultHandler implements ResultHandler { +public abstract class TerminalAwareResultHandler implements ResultHandler { protected Terminal terminal; @Autowired @Lazy diff --git a/spring-shell-core/src/main/java/org/springframework/shell/result/TypeHierarchyResultHandler.java b/spring-shell-core/src/main/java/org/springframework/shell/result/TypeHierarchyResultHandler.java index 2dfab68b..01cc044e 100644 --- a/spring-shell-core/src/main/java/org/springframework/shell/result/TypeHierarchyResultHandler.java +++ b/spring-shell-core/src/main/java/org/springframework/shell/result/TypeHierarchyResultHandler.java @@ -47,7 +47,13 @@ public class TypeHierarchyResultHandler implements ResultHandler { } Class clazz = result.getClass(); ResultHandler handler = getResultHandler(clazz); - handler.handleResult(result); + try { + handler.handleResult(result); + } + catch (Exception e) { + // Protect against exceptions happening in ResultHandlers + getResultHandler(e.getClass()).handleResult(e); + } } private ResultHandler getResultHandler(Class clazz) {