繁体   English   中英

Rest Api异常处理

[英]Rest Api exception handling

我正在为Service和Web设计不同的项目。 我想知道如何处理来自服务的特定异常。 例如,我在服务端按如下方式处理DuplicateDataException:

public void serviceFunction()
{
try
{
//code
}catch(DuplicateDataException e)
{
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
                    .entity(e.getMessage()).build();
}}

在UI端:控制器类正在通过Rest API调用服务功能

@RequestMapping(value = "/addNew", method = RequestMethod.POST)
    public ModelAndView addNew(Object obj) { 

try {
            restTemplate.exchange(url, HttpMethod.POST, httpEntity,
                    Object.class);
             LOGGER.info("Object Created Successfully");
        } catch (Exception e) { 
return ModelAndView("PageName", "param","value");
}
}

在UI端,我收到内部服务器错误,相反,我想获取在服务端设置的实体错误消息值。

作为一种最佳实践,请尝试在服务代码中捕获异常并抛出RuntimeException("An error occured")或扩展Java的RuntimeException的自定义异常。 然后,您可以为所有控制器定义一个全局ExceptionHandler ,并返回自己的错误页面,如下所示:

@ControllerAdvice
public class MyExceptionHandler {

  @ResponseStatus(HttpStatus.NOT_FOUND)
  @ExceptionHandler(Exeption.class)
  public ModelAndView handleFileNotFoundException(Exception exception){

    ModelAndView modelAndView = new ModelAndView();

    modelAndView.setViewName("yourView");
    modelAndView.addObject("exception", exception);

    return modelAndView;
 }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM