spring 如何处理HttpServerErrorException?

unguejic  于 2022-11-21  发布在  Spring
关注(0)|答案(1)|浏览(83)

我目前正在使用java和spring Boot 来获得API的授权。这取决于用户插入的值来查看API是否有效。如果有效,它基本上会显示数据。

主要问题

当用户在api的末尾输入错误的值时,我得到错误500“内部服务器错误”,它停止了我的spring应用程序。我想创建一个异常,它将捕获这个错误,并吐出错误500,而不是停止我的应用程序。即使是错误的值,我也希望我的应用程序继续运行。

错误

当用户输入错误的参数时,我收到以下错误

org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error

如何覆盖它,以便即使用户输入错误数据,也不会中断应用程序并继续运行只需对数据显示Null

试图处理

我能够使用下面代码允许应用程序继续运行

try {  //OauthRestTemplate exhanges credentials for api access
 } catch (HttpServerErrorException e ) {                
   e.getStatusCode();
   logger.info(e + "Server bypass, Continue running application");
    //allow application to continue running but does not display the actual message that would be on the api.
        }
  //output
   org.springframework.web.client.HttpServerErrorException: 500 Internal Server ErrorServer bypass, Continue running application

但我希望它绕过状态500,并显示实际的消息,当我在API上使用错误的参数时。我应该收到相同的值打印在API上。示例如下

{"message":"Physical resource does not exist for mac address: D","code":"APRO-2001","timestamp":1490895756655,"type":"com.server.camp.framework.exception.ErrorResponse","status":"INTERNAL_SERVER_ERROR"}
xzv2uavs

xzv2uavs1#

我不知道这是否适用于您的问题(因为您还没有提供代码),但这可能会有所帮助:

@ResponseStatus(value=HttpStatus.NOT_FOUND, reason="No such Order")  // 404
 public class OrderNotFoundException extends RuntimeException {
     // ...
 }

您基本上可以将@ResponseStatus添加到类内的函数中,将值设置为适当的值(在您的示例中为INTERNAL_SERVER_ERROR,如下所示)。
我希望这能有所帮助!如果没有,请提供您的代码。
也许这个关于 Spring 异常处理的链接可能会有所帮助:https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

相关问题