【发布时间】:2010-12-29 16:35:38
【问题描述】:
当我在 Erlang 中编程时,我是否应该通过模式匹配验证函数调用的所有返回值是否成功,即使我不打算使用返回值?到目前为止,我见过的大多数 Erlang API 都不会在错误时抛出异常(但会返回 {error, Error} 之类的东西),所以我必须验证返回值是吗?我真的不需要担心的任何例外情况?
【问题讨论】:
当我在 Erlang 中编程时,我是否应该通过模式匹配验证函数调用的所有返回值是否成功,即使我不打算使用返回值?到目前为止,我见过的大多数 Erlang API 都不会在错误时抛出异常(但会返回 {error, Error} 之类的东西),所以我必须验证返回值是吗?我真的不需要担心的任何例外情况?
【问题讨论】:
当出现问题时尽早崩溃是一种很好的编程风格。之后您执行的任何操作都将在系统处于未知状态时完成。
除非您打算处理错误值并对其执行某些操作,否则您为成功案例编写代码。就像下面这个悲伤的小循环:
life() ->
ok = work(),
ok = rest(),
life().
【讨论】:
Doc = my_api_call(), ok = is_valid_doc(Doc).
false = is_atom(Doc) 的事情,如果保存失败,这应该会失败。