什么是可能引发的函数的typespec声明?

时间:2018-03-05 13:36:36

标签: elixir

使用Elixir's typespecs,如何在@spec中记录函数可能引发异常而不是返回值?

1 个答案:

答案 0 :(得分:10)

使用no_return

no_returnlisted in the Typespecs docs)应该用来记录函数何时加注。

例如:

@spec get_env!(var_name :: String.t()) :: String.t() | no_return
def get_env!(var_name) do
  System.get_env(var_name) || raise "#{var_name} is not set!"
end

这就是File.copy!/2 uses