我的控制器中有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抛出的异常详细信息?
答案 0 :(得分:0)
使用ControllerAdvice处理两个异常。
答案 1 :(得分:0)
我支持的@Wd Ly 建议
写控制器建议开发人员测试了许多方法来制作控制器 控制器建议课的工作。经过努力,他们发现 要考虑以下几点:
创建自己的异常类。尽管春季提供了许多 代表应用程序中常见异常的类,它是 编写自己的或扩展现有的更好的做法。一 每个应用程序的控制器建议类。 拥有所有东西是一个好主意 单个类中的异常处理程序,而不是注释多个 带有 @ControllerAdvice 的用户。编写 handleException方法。这个 应该使用 @ExceptionHandler 进行注释,并将处理所有 在其中声明的异常,然后将委派给特定的处理程序 方法。每个异常添加一个方法处理程序。想象你想 处理 UserNotFoundException ,然后创建一个 handleUserNotFoundException 。创建一个发送响应的方法 给用户。处理程序方法旨在执行逻辑处理 给定异常,则他们将调用发送 响应。此方法将收到错误列表,如正文和 特定的HTTP状态。
fruit