在Erlang中标记错误有什么好处?

时间:2015-03-12 23:18:45

标签: error-handling erlang

在Erlang中,标记成功的返回值有一个好处(例如,如Erlang Programming Rules and Conventions所示),但标记失败值是否有好处?具体来说,file包中使用的标记样式是否有益,其中错误用error原子标记?例如,file:open在发生错误时返回{error, Reason},其中Reason是更具描述性的原子,但是当您可以返回时,需要error标记直接Reason原子?我目前可以看到的唯一优势是标签将Reason原子记录为错误,但我觉得错误原子是自我描述性的,并且必须通过" unbox"此函数的所有未来错误值。

1 个答案:

答案 0 :(得分:6)

不只是file模块用error原子来标记错误;相反,这是一个非常常见的Erlang实践。好处是,任何想要在不打扰原因的情况下检查错误的代码都可以匹配{error, _Reason}并采取适当的操作,而如果它要匹配Reason本身 - 顺便说一下,并不总是一个原子 - 这种匹配会根据被调用的内容而变化很大,并且在代码中也很难看到。