最新の安定バージョンについては、Spring Shell 4.0.1 を使用してください!

終了コードのマッピング

終了コードのデフォルトの動作は次のとおりです。

  • コマンドオプションの解析でエラーが発生すると、コード 2 が返されます。

  • 一般的なエラーは 1 コードになります

  • 明らかに、それ以外の場合は 0 のコードになります

すべての CommandRegistration は、例外終了コード間のマッピングを独自に定義できます。Spring シェルは、終了コードに関して 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();
アノテーションベースの構成で終了コードをカスタマイズすることはできません