Ecto Errors Happy Path的一部分



Elixir and Phoenix outside here
我正在尝试学习一些使用迄今为止真正优秀的语言和框架的最佳实践。

我在社区中注意到(并同意)的一件事是例外应该"例外"。它们不应该用来控制应用程序的流程。因此,try/raise不应该被用作"快乐路径"的一部分。

这似乎与phoenix提供的开箱即用的生成器相反。

# Code genereated by elixir
def get_admin_user!(id), do: Repo.get!(AdminUser, id)

上面的代码是由Phoenix生成的,如果找不到用户将抛出异常。这似乎是查询Ecto的预期方式,因为这段代码是使用mix phx.gen.context

生成的:为什么EctoPhoenix使用异常来报告常规错误?如果这是正确的,什么是适当的方法来处理这些错误,而不添加try/raise块到每个动作?

我不知道第一个问题的答案,为什么Ecto被设计成在似乎是"快乐之路"的一部分的情况下报告错误。

处理这些异常的惯用方法是让Phoenix使用plugin . exception为您处理这些异常。您还可以扩展这些异常,以便将其他一般错误映射到响应代码和响应。

最新更新