在找不到资源时抛出异常是否正确

时间:2017-04-21 12:16:13

标签: java rest exception

在找不到请求的资源时,是否可以在服务器端抛出异常?

客户端收到404未找到。我关心的是,当发生这种情况时,是否在服务器端抛出异常是好还是错。

4 个答案:

答案 0 :(得分:2)

很难假设您尝试使用添加到问题中的详细信息。

但是,如果您正确处理异常,则该方法可能没有任何问题。看看一些框架使用的方法:

JAX-RS

Spring MVC

答案 1 :(得分:1)

基本上抛出异常的保留状态代码并不理想。你应该在内部处理这些异常并准备你自己的代码,其中包含客户应该知道实际问题的完整信息。

答案 2 :(得分:1)

从语义的角度来看:如果条件不可恢复且必须通知devs,则应抛出异常。

服务器无法在会话开始时解析身份验证请求 - 这是非常严重的情况,并且异常是适当的。

用户未填写必填字段并尝试发送表单。这个问题可以修复,异常是一个糟糕的设计。

答案 3 :(得分:0)

我想说添加一个过滤器来捕获404并添加有关404详细信息的自定义信息。

如果是纯REST实现,任何缺少资源ID和格式错误的URL都将返回404。 就REST合同而言,两种情况都有正确的404响应。但是关于缺少什么类型的资源的更多细节将帮助客户端消费它以采取适当的行动。

相关讨论: return-404-when-a-rest-resource-is-not-found