アカウント用の REST サービスがあります。コントローラーは、サービス層を呼び出してアカウントを見つけます。AccountService はドメイン例外をスローできます。通常はクライアントの入力エラーに関するケースです。このような状況では、ドメイン例外を ClientException でラップしたいと考えています。クライアントにステータス コード 400 と例外メッセージだけを表示する方法はありますか? または、サービス層が不正な引数を検出した状況を処理するためのより良い方法はありますか?
@Controller
class AccountController
@ResponseBody
@RequestMapping("/accounts/${accountId}")
public Account account(@PathVariable int accountId, HttpServletResponse response){
try{
return accountService.find("Account not found with id: " + accountId);
}catch(Exception e){
response.setStatus(400);
throw new ClientException(e);
}
}
}
class AccountService{
public Account find(int accountId){
if(acountId > 100){
throw new AccountNotFoundException(accountId);
}else{
return new Account(accountId, "someone");
}
}
}