終了コードのマッピング
終了コードのデフォルトの動作は次のとおりです。
コマンドオプションの解析でエラーが発生すると、
2
のコードが返されます。一般的なエラーは、結果コード
1
になります。明らかに、それ以外の場合の結果コードは
0
です。
すべての CommandRegistration
は、例外と終了コードの間の独自のマッピングを定義できます。基本的に、終了コードに関する 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();
アノテーションベースの構成で終了コードをカスタマイズすることはできません |