在Erlang中返回错误代码

在Erlang中返回错误代码,erlang,Erlang,我正在写一些Erlang代码,我很不确定是否应该让一切都快速失败。我发现fail fast的一个问题是,对于开发人员/用户来说,生成的异常非常没有意义。你知道我应该返回什么不会给出深奥且难以读取的堆栈跟踪吗?我建议快速失败并学习如何读取堆栈跟踪。我建议快速失败并学习如何读取堆栈跟踪。我建议你使用错误记录器(3)进行日志记录,并让开发人员查看幕后的实际情况。为了收集进程崩溃时VM返回的所有数据,建议您遵循此操作。我建议您使用错误记录器(3)进行日志记录,并让开发人员查看幕后实际发生的情况。建议遵循

我正在写一些Erlang代码,我很不确定是否应该让一切都快速失败。我发现fail fast的一个问题是,对于开发人员/用户来说,生成的异常非常没有意义。你知道我应该返回什么不会给出深奥且难以读取的堆栈跟踪吗?

我建议快速失败并学习如何读取堆栈跟踪。

我建议快速失败并学习如何读取堆栈跟踪。

我建议你使用错误记录器(3)进行日志记录,并让开发人员查看幕后的实际情况。为了收集进程崩溃时VM返回的所有数据,建议您遵循此操作。

我建议您使用错误记录器(3)进行日志记录,并让开发人员查看幕后实际发生的情况。建议遵循以下步骤,以便在进程崩溃时收集VM返回的所有数据。

Erlang中的基本原则是:

让它崩溃

我发现避免所谓的防御性编程非常有用。在Erlang编程规则页面中对该概念进行了更详细的解释:

此外,即使某些Erlang错误可能有点神秘,处理它们的一个好方法是跟踪它们!Erlang中的跟踪非常简单。请查看此快速参考:


或者只需参考官方文档。

Erlang的基本原则是:

让它崩溃

我发现避免所谓的防御性编程非常有用。在Erlang编程规则页面中对该概念进行了更详细的解释:

此外,即使某些Erlang错误可能有点神秘,处理它们的一个好方法是跟踪它们!Erlang中的跟踪非常简单。请查看此快速参考:


或者只需参考官方文档。

因为Erlang是一种函数式语言,如果您倾向于编写,则通常很容易发现错误,因为给定一个参数的纯函数将始终返回相同的结果。因此,有了堆栈跟踪,一旦找到失败的函数,就可以找出导致错误的原因。与命令式编程相反,您不需要花费大量时间调试代码,通常甚至不需要调试器,搜索错误会变成一个有趣的游戏。这篇文章很有用。

因为Erlang是一种函数式语言,如果您倾向于编写,错误通常很容易被发现,因为给定一个参数的纯函数总是会返回相同的结果。因此,有了堆栈跟踪,一旦找到失败的函数,就可以找出导致错误的原因。与命令式编程相反,您不需要花费大量时间调试代码,通常甚至不需要调试器,搜索错误会变成一个有趣的游戏。文章很有用。

这是否意味着所有监控系统的支持人员都应该学习如何读取Erlang错误消息?当然,负责诊断或修复问题的每个人都需要学习必要的工具。无论这意味着erlang跟踪、Python跟踪、C核心转储、Java跟踪,还是不同层次的细节知识。您可能需要一些特定技术的专家,以及许多通才,他们了解基本知识,可以重定向到适当的专家。好的,谢谢。我没有意识到这是支持人员工作的一部分。我会让他们知道的。虽然我知道他们不会高兴,但这对我来说更好,因为目前他们总是在出现生产错误时(大约每天20次)来找我。ejabberd FAQ有一个常见错误消息列表:我发现即使在学习Erlang之前,这也很有用;我通常可以从列表中找到错误消息中的关键词。这是否意味着所有监控系统的支持人员都应该学习如何读取Erlang错误消息?当然,负责诊断或修复问题的每个人都需要学习必要的工具。无论这意味着erlang跟踪、Python跟踪、C核心转储、Java跟踪,还是不同层次的细节知识。您可能需要一些特定技术的专家,以及许多通才,他们了解基本知识,可以重定向到适当的专家。好的,谢谢。我没有意识到这是支持人员工作的一部分。我会让他们知道的。虽然我知道他们不会高兴,但这对我来说更好,因为目前他们总是在出现生产错误时(大约每天20次)来找我。ejabberd FAQ有一个常见错误消息列表:我发现即使在学习Erlang之前,这也很有用;我通常能从列表中的错误信息中找出关键词。错误记录器看起来不错。那么我应该从抛出异常的地方还是从捕获异常的地方来调用它呢?它不会弄乱代码吗?你不需要调用任何东西。实际上没有必要这样做,因为在程序启动时安装了记录器处理程序。有一些很好的文章也提供了使用此类处理程序的示例。您还希望。它是一个很好的日志模块,可用于通过浏览器从不同节点收集/查看日志。虽然我还没碰它。我在Spawnlink上搜索了“error\u logger”,但没有一个结果显示error\u logger看起来不错。那么我应该从抛出异常的地方还是从捕获异常的地方来调用它呢?它不会弄乱代码吗?你不需要调用任何东西。实际上没有必要这样做,因为在程序启动时安装了记录器处理程序。有一些很好的文章也提供了使用此类处理程序的示例。您还希望。它是一个很好的日志模块,可用于通过浏览器从不同节点收集/查看日志。虽然我还没碰过它。我在Spawnlink上搜索了“错误日志”,但没有一个结果