退出代码的默认行为为:

  • 来自命令选项解析的错误将导致代码2

  • 任何一般错误将导致结果代码1

  • 显然,在任何其他情况下,结果代码是0

每个都可以定义自己的 Exception 代码和退出代码之间的映射。 从本质上讲,我们受制于关于退出代码的功能,并且简单地说 融入其中。CommandRegistrationSpring Boot

假设下面有一个异常,它将从命令中抛出:

static class MyException extends RuntimeException {

	private final int code;

	MyException(String msg, int code) {
		super(msg);
		this.code = code;
	}

	public int getCode() {
		return code;
	}
}

可以在退出代码和退出代码之间定义映射函数。您还可以 只需配置一个退出代码,这只是配置中的语法糖。Throwable

CommandRegistration.builder()
	.withExitCode()
		.map(MyException.class, 3)
		.map(t -> {
			if (t instanceof MyException) {
				return ((MyException) t).getCode();
			}
			return 0;
		})
		.and()
	.build();
退出代码不能使用基于注释的配置进行自定义
退出代码不能使用基于注释的配置进行自定义