对api的异常处理和错误响应

问题描述 投票:0回答:1

我正在设计针对api的异常处理和错误响应。任何人都可以让我知道异常是如何为企业应用程序设计的。我们可以将Java预定义的异常映射到应用程序异常。如果是这样,我们如何将预定义的Java异常映射到我们的应用程序场景?如果不是,我们如何为企业应用程序设计例外?有什么指导方针吗?一旦映射了异常,就将其提供给服务层。错误消息(用于api响应)是否应该在服务层中框起来?如果是,您可以指定任何原因吗?如果不是,您是否可以指定任何其他用于对任何api进行错误响应框架的选项?可以建议您的应用程序遵循任何设计技术吗?在此先感谢

java api exception httpresponse design
1个回答
0
投票
<< 。并且我们可以提供自定义的错误消息,以便客户端可以了解出了什么问题。

以下是我为处理其他api异常而开发的代码段。因此,在我的代码中,我处理了两个异常NoSuchElementException和MethodArgumentNotValid异常。

例如我如果您按ID搜索记录,并且该记录不存在,则将获取NoSuchElementException,以便客户端将知道该ID不存在记录]

并且对于MethodArgumentNotValid异常,我已向变量添加了约束例如,尝试输入否定ID会出现此异常

@ ControllerAdvice

公共类GlobalExceptionHandler扩展了ResponseEntityExceptionHandler {

@ExceptionHandler(NoSuchElementException.class) public final ResponseEntity<Object>handleRecordNotFoundException(NoSuchElementException ex,WebRequest request) { return handleExceptionInternal(ex,ErrorResponse.builder() .status(HttpStatus.NOT_FOUND) .timestamp(new Date()) .detail(ex.getLocalizedMessage()) .message("Record not found") .build(),new HttpHeaders(),HttpStatus.NOT_FOUND,request); } @Override protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex,HttpHeaders headers,HttpStatus status,WebRequest request) { List<String> errors=new ArrayList<String>(); for(ObjectError error:ex.getBindingResult().getFieldErrors()) { errors.add(error.getObjectName()+":"error.getDefaultMessage()); } return handleExceptionInternal(ex,ErrorResponse.builder().details(errors).build,headers,HttpStatus.BAD_REQUEST,request); }

}
© www.soinside.com 2019 - 2024. All rights reserved.