退出代碼映射
預設的退出代碼行為如下
-
命令選項解析錯誤將導致代碼
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();
退出代碼無法使用基於註解的配置進行自訂 |