[英]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.