|
该版本仍在开发中,尚未被视为稳定。最新稳定版本请使用Spring Shell 3.4.1! |
异常解析
未处理的异常会冒泡成壳结果处理服务然后最终
由某个实例处理结果处理器.链条ExceptionResolver实现
可用于解决异常,并赋予你返回消息以获得的灵活性
写入控制台,并包含退出代码,并被封装在其中指令处理结果.指令处理结果可能包含消息和/或退出代码。
static class CustomExceptionResolver implements CommandExceptionResolver {
@Override
public CommandHandlingResult resolve(Exception e) {
if (e instanceof CustomException) {
return CommandHandlingResult.of("Hi, handled exception\n", 42);
}
return null;
}
}
CommandExceptionResolver实现可以全局定义为 BEANS:
@Bean
CustomExceptionResolver customExceptionResolver() {
return new CustomExceptionResolver();
}
或定义为指挥注册如果只适用于某个特定命令:
CommandRegistration.builder()
.withErrorHandling()
.resolver(new CustomExceptionResolver())
.and()
.build();
| 用命令定义的解析器在全局解析器之前处理。 |
你可以使用自己的例外类型,这些例外也可以是 Spring Boot 的实例出口代码生成器如果你想定义退出代码:
static class CustomException extends RuntimeException implements ExitCodeGenerator {
@Override
public int getExitCode() {
return 0;
}
}
一些内置的CommandExceptionResolverBeans已注册处理普通
命令解析抛出的例外。这些序列以定义的顺序优先级注册于CommandExceptionResolver.DEFAULT_PRECEDENCE.
由于这些豆子按特定顺序使用,@Order注释或命令界面可以像使用其他 Spring 应用一样。这
如果你需要控制自己的咖啡豆以便使用,这通常很有用
要么在默认之前,要么之后。