当一个其他api调用另一个api时如何引发原始异常

时间:2019-04-03 02:51:37

标签: java spring-boot exception controller resttemplate

我的控制器中有2个(A和B)REST API。 A可以通过RestTemplate调用B。 A和B都抛出异常,现在A收到请求,然后调用B和B抛出异常,但是我只得到500状态代码,没有返回异常详细信息。

@Autowired
private RestTemplate internalRestRouter;

@PostMapping("/A")
public Object handleACommand(@RequestBody Map<String, Object> payload) throws CliException {
    return internalRestRouter.postForObject("http://localhost:8080/B", null, Object.class);
}

@PostMapping("/B")
public Object handleBCommand() throws CliException {
    throw new CliException("B Exception details");
}

当我打电话给A时,如何获得B抛出的异常详细信息?

2 个答案:

答案 0 :(得分:0)

使用ControllerAdvice处理两个异常。

答案 1 :(得分:0)

  我支持的

@Wd Ly 建议

     

写控制器建议开发人员测试了许多方法来制作控制器   控制器建议课的工作。经过努力,他们发现   要考虑以下几点:

     

创建自己的异常类。尽管春季提供了许多   代表应用程序中常见异常的类,它是   编写自己的或扩展现有的更好的做法。一   每个应用程序的控制器建议类。 拥有所有东西是一个好主意   单个类中的异常处理程序,而不是注释多个   带有 @ControllerAdvice 的用户。编写 handleException方法。这个   应该使用 @ExceptionHandler 进行注释,并将处理所有   在其中声明的异常,然后将委派给特定的处理程序   方法。每个异常添加一个方法处理程序。想象你想   处理 UserNotFoundException ,然后创建一个    handleUserNotFoundException 。创建一个发送响应的方法   给用户。处理程序方法旨在执行逻辑处理   给定异常,则他们将调用发送   响应。此方法将收到错误列表,如正文和   特定的HTTP状态。

fruit