当函数名以“!”结尾时

Che*_* Yu 0 elixir

考虑一下Application.fetch_env!/2。\n!函数名以 结尾的特殊含义是什么?

\n
defp db_host do\n  Application.fetch_env!(:my_app, :db_host)\nend\n
Run Code Online (Sandbox Code Playgroud)\n

Unh*_*eep 5

如命名约定部分“Trailing Bang”中所述:https://hexdocs.pm/elixir/1.13.4/naming-conventions.html#trailing-bang-foo

尾随感叹号(感叹号)表示失败情况引发异常的函数或宏。

因此,当配置参数不存在时,该函数Application.fetch_env!将引发 an (如文档中所述),而(不带感叹号)将在参数不存在的情况下返回 anArgumentErrorApplication.fetch_env:error