我想知道人们认为使用 Ring 库在用 Clojure 编写的 REST 样式 api 中处理错误的好方法是什么。
Paul Umbers 在他的 Clojure RESTful API 教程中采用的一种方法是让异常自然发生,并允许它们一直冒泡到专门用于将异常转换为特定 HTTP 状态代码的中间件。
基本上,数据库约束会抛出它们自己的特定错误(例如 PSQLException),模型验证器会抛出另一种类型,所有这些都在代码 400 的保护伞下。通用异常处理程序将捕获未知异常并返回 500 代码。
一些想法:
- 我们能做得更好吗?这是出于某种特定原因的错误设计吗?
- 许多人会声称处理通用异常类型是不好的做法。在这里也能提出这样的论点吗?
谢谢!