【发布时间】:2010-05-27 10:01:59
【问题描述】:
我正在编写一些 Erlang 代码,但我非常不确定是否应该让一切都快速失败。我发现快速失败的一个问题是,对于开发人员/用户而言,生成的异常毫无意义。知道我应该返回什么不会给出深奥且难以阅读的堆栈跟踪吗?
【问题讨论】:
标签: erlang
我正在编写一些 Erlang 代码,但我非常不确定是否应该让一切都快速失败。我发现快速失败的一个问题是,对于开发人员/用户而言,生成的异常毫无意义。知道我应该返回什么不会给出深奥且难以阅读的堆栈跟踪吗?
【问题讨论】:
标签: erlang
我建议您使用 error_logger(3) 进行日志记录,并让开发人员查看幕后实际发生的情况。建议关注OTP principles,以便收集VM在进程崩溃时返回的所有数据。
【讨论】:
我建议快速失败并学习如何阅读堆栈跟踪。
【讨论】:
Erlang 的基本原理是:
让它崩溃!
我发现避免所谓的防御性编程非常有用。 Erlang Programming Rules 页面中更详细地解释了这个概念:
http://www.erlang.se/doc/programming_rules.shtml#HDR11
此外,即使某些 Erlang 错误可能有点神秘,处理它们的好方法是trace!在 Erlang 中进行跟踪非常简单。看看这个快速参考:
http://aloiroberto.wordpress.com/2009/02/23/tracing-erlang-functions/
或者直接参考官方文档。
【讨论】:
由于 Erlang 是一种函数式语言,如果您倾向于编写 Pure functions,则通常很容易发现错误,因为给定一个参数的纯函数将始终返回相同的结果。因此,有了堆栈跟踪,一旦找到失败的函数,您就可以找出导致错误的原因。与命令式编程相反,您不需要花费大量时间调试代码,通常您甚至不需要调试器,搜索错误变成了有趣的游戏。 This文章很有用。
【讨论】: