gpt4 book ai didi

java - 管理异常

转载 作者:行者123 更新时间:2023-12-02 13:04:45 26 4
gpt4 key购买 nike

我开发了一个应用程序 Spring Boot。我想要管理异常而不是向客户端发送错误 500。

我想做这样的事情:

 @RequestMapping(value = "/testRest", method = RequestMethod.GET)
public @ResponseBody Person tst(HttpServletResponse response) {
try {
return ldapService.getUserByPrimaryKey("tst@ts.com");
} catch (Exception e) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
return (Person) "{\"ERROR\": \" + e.getMessage() +\"}"; // This not work
}
}

你有什么想法吗?

最佳答案

return (Person) "{\"ERROR\": \" + e.getMessage() +\"}"; // This not work

这不起作用,因为您试图将 String 对象转换为 Person 类型。我相信它甚至不应该编译。

有两种方法可以解决此问题:

  • 返回 Person 对象,并且由于您使用的是 @ResponseBody,它将被序列化为 JSON
  • 如果您想手动返回 JSON 响应,则应返回 String 而不是 Person,并正确设置 Content-Type header (通过使用 @RequestMapping(products = "application/json"response.setContentType("application/json"))

我还建议阅读 Exception Handling in Spring MVC文章以查找在 Spring MVC 中处理异常的更多方法。

<小时/>

更新:

在这种简单的情况下,您可以使用带有单个字段的Map:

public @ResponseBody Map<String, String> tst(HttpServletResponse response) {
...
return Collections.singletonMap("ERROR": e.getMessage());

关于java - 管理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44203748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com