gpt4 book ai didi

java - 当服务器抛出 IllegalArgrumentException 等应用程序异常时,预期响应是什么?

转载 作者:行者123 更新时间:2023-12-01 10:07:21 26 4
gpt4 key购买 nike

当我发出休息请求并且服务器抛出应用程序异常(例如 IllegalArgumentException)时,我得到的响应为 http 状态 404

http 状态 500 的响应不是更好吗?

或者,当抛出应用程序异常时,实际的预期响应是什么? Resteasy、Spring 或 Tomcat 本身是否有一些默认行为?

我知道我可以使用 ExceptionMapper 来实现 Resteasy,但这真的是最佳实践还是有更好的选择?

我正在使用以下设置:

  • Spring
  • 安息
  • Tomcat 7

更新:

我面临的问题是我有 2 个 Web 应用程序,一个在抛出 IllegalArgumentException 时返回 http 状态 500,另一个返回 http 状态 400。我不明白为什么他们的行为不同。在我看来,这两个 Web 应用程序都有相同的 spring 和 Resteasy 配置。

当我调试时,我看到resteasy正在将IllegalArgumentException转换为org.jboss.resteasy.spi.UnhandledException,但响应和响应状态代码分别没有被触及。

因此,除了不知道哪个 http 状态代码是预期的状态代码(400,正如 Jon Skeet 和 Stefano Cazzola 已经指出的那样)之外,我也不知道为什么这 2 个 Web 应用程序的行为不同。

我在两个网络应用程序中都找不到任何resteasy ExceptionMapper。那么resteasy、spring或tomcat中是否有一些默认行为,即将IllegalArgumentException映射到http状态404或http状态500?或者说这是怎么发生的?

最佳答案

响应代码与服务器中发生的错误相关。如果错误与从客户端收到的无效输入相关,则正式正确的响应状态为 400(错误请求)。与 500 的区别在于,返回 400 是服务器的正确行为:意味着服务器正确处理并响应错误,因为请求错误。如果重新提交相同的请求,它将收到相同的错误响应。服务器不应该纠正这个错误,这取决于客户端。

您可以采取this link作为引用

关于java - 当服务器抛出 IllegalArgrumentException 等应用程序异常时,预期响应是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36359531/

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