我正在使用java和springboot开发一个web应用程序。具体来说,我正在审查其他开发人员编写的一些代码。我使用postman对我的应用程序进行http调用。在某些情况下,我的应用程序需要通知调用者某些情况。在本例中,应用程序的开发人员抛出 JwtTokenException
打电话的人 IOException
.
try {
myToken = methodThatObtainsAToken(tokenInput);
}catch(IOException ex) {
throw new JwtTokenException("Error 401", JwtStatusResponse.JWT_NOT_VALID); // TODO: cambiare
}
当 Postman 出了问题时:
我在这段代码中有很多其他非常类似的情况,我必须做以下事情:我必须替换代码 throw new JwtTokenException
因此,它抛出异常,使调用方理解(以便我可以通过postman看到它们)发生了http错误(使用一些代码)。在我编写的示例中,我只将“error401”作为字符串编写。代码中还有其他地方我使用了“error 500”、“error 302”等等。。但这些只是信息字符串,与抛出给客户机的真正错误不符。如何抛出引发“http错误”的正确异常?
3条答案
按热度按时间ilmyapht1#
通常返回设置了body对象和状态的响应实体,以提供有趣的信息:
响应实体是org.springframework.http.responseentotuy,它提供了许多方便的方法来设置所有的头和任何必要的东西。
jaxagkaj2#
如果大多数异常都是像您发布的代码中那样处理的,并且您不想更改方法的返回类型,只需将它们替换为
这将产生以下输出
如果你想获得异常信息,只需添加
答复:
请注意,如果您没有声明自己的异常解析程序,它将被记录
您可以传递一个描述异常的字符串而不是null,它将替换json响应中的“message”。
kq4fsx7k3#
从你的附加屏幕截图。您的应用程序未经授权返回401。我认为您不再需要传递错误代码,因为它是从响应本身获得的。异常不会返回http状态代码,作为开发人员,您有责任告诉您的应用程序返回哪个错误代码。例如,在restcontroller中
在自定义异常处理程序中,可以这样做。
注意:当您从jwt验证器过滤器调用时,会触发此事件