我有一个用于帐户的 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");
}
}
}