java - Rest Api异常处理

标签 java rest spring-mvc

我有不同的服务和网络项目。我想知道当服务出现特定异常时如何处理。例如,我在服务端按如下方式处理 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/

相关文章:

java - Lucene 从索引更新文档字段,没有松散信息

java - 病毒图像的风险

java - 优化:使 SQL 查询脱离循环

spring - 如何正确地将多个 url 模式映射到 Spring 调度程序?

java - 方法包含不起作用

rest - 如何在 noir 中创建 REST API 来接收 ids 列表?

web-applications - Web 应用程序的 RESTful 身份验证

java - HTTP 状态 400 - 必需的字符串参数 'walletName' 不存在

java - Spring Web - 类级 RequestMapping 不起作用

java - 避免 Spring 应用程序在浏览器关闭时注销