退出代碼映射

預設的退出代碼行為如下

  • 命令選項解析錯誤將導致代碼 2

  • 任何一般錯誤將導致代碼 1

  • 顯然在任何其他情況下,結果代碼為 0

每個 CommandRegistration 都可以定義其自身在 Exception退出代碼之間的映射。 本質上,我們受限於 Spring 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();
退出代碼無法使用基於註解的配置進行自訂