异常解析

未处理的异常会冒泡成壳结果处理服务然后最终 由某个实例处理结果处理器.链条ExceptionResolver实现 可用于解决异常,并赋予你返回消息以获得的灵活性 写入控制台,并包含退出代码,并被封装在其中指令处理结果.指令处理结果可能包含消息和/或退出代码spring-doc.cadn.net.cn

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:spring-doc.cadn.net.cn

@Bean
CustomExceptionResolver customExceptionResolver() {
	return new CustomExceptionResolver();
}

或定义为指挥注册如果只适用于某个特定命令:spring-doc.cadn.net.cn

CommandRegistration.builder()
	.withErrorHandling()
		.resolver(new CustomExceptionResolver())
		.and()
	.build();
用命令定义的解析器在全局解析器之前处理。

你可以使用自己的例外类型,这些例外也可以是 Spring Boot 的实例出口代码生成器如果你想定义退出代码:spring-doc.cadn.net.cn

static class CustomException extends RuntimeException implements ExitCodeGenerator {

	@Override
	public int getExitCode() {
		return 0;
	}
}

一些内置的CommandExceptionResolverBeans已注册处理普通 命令解析抛出的例外。这些序列以定义的顺序优先级注册于CommandExceptionResolver.DEFAULT_PRECEDENCE. 由于这些豆子按特定顺序使用,@Order注释或命令界面可以像使用其他 Spring 应用一样。这 如果你需要控制自己的咖啡豆以便使用,这通常很有用 要么在默认之前,要么之后。spring-doc.cadn.net.cn