【发布时间】:2011-02-12 04:41:03
【问题描述】:
我们有一个运行良好的 REST API。我们正在重构并决定如何在内部处理 API 用户的错误。
例如,用户需要指定“电影”url 参数,该参数应该取“1984”、“Crash”或“Avatar”的值。首先,我们检查它是否具有有效值。
如果电影参数无效,最好的方法是什么?
- 从内部方法之一返回 null 并在主要 API 调用方法中检查 null
- 从内部方法抛出异常并在主 API 方法中捕获异常
我认为使用异常会使我们的代码更具可读性和优雅。然而,我们很不情愿,因为我们可能会因为用户 API 输入错误而引发许多异常,我们的代码可能是完美的。这似乎不是对异常的正确使用。如果异常会导致严重的性能损失,这对于需要收集堆栈跟踪等是有意义的,那么当我们需要做的只是告诉用户参数错误时,我们就会不必要地消耗资源。
这些是 REST API 方法,因此我们不会向 API 用户传播异常,即使可能我们也不想这样做。
那么这里的最佳做法是什么?使用丑陋的 null 还是使用 java 的异常机制?
【问题讨论】:
-
当用户传入一个“无效”的电影参数时,这是否代表用户犯了一个错误,还是只是搜索未命中?