我有不同的服务和网络项目。我想知道当服务出现特定异常时如何处理。例如,我在服务端按如下方式处理 DuplicateDataException:
public void serviceFunction()
{
try
{
//code
}catch(DuplicateDataException e)
{
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
.entity(e.getMessage()).build();
}}
UI端: Controller 类通过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 端,我收到内部服务器错误,相反,我想获取在服务端设置的实体错误消息值。
最佳答案
作为一种最佳实践, try catch 服务代码中的异常并抛出 RuntimeException("An error generated")
或扩展 Java 的 RuntimeException
的自定义异常。然后,您可以为所有 Controller 定义一个全局 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;
}
}
关于java - Rest Api异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47946885/