gpt4 book ai didi

erlang - Erlang 中的非防御性编程

转载 作者:行者123 更新时间:2023-12-04 17:46:33 27 4
gpt4 key购买 nike

以下几行出现在 http://aosabook.org/en/riak.html 中,在该部分的第二段: 15.1. Erlang 简介 :

"Calling the function with a negative number will result in a run time error, as none of the clauses match. Not handling this case is an example of non-defensive programming, a practice encouraged in Erlang."



两个问题:在Erlang中处理由此产生的错误的惯用方式是什么?为什么这比明确涵盖所有情况更好,如在 OCaml 或 Haskell 之类的语言中?

最佳答案

如果您不为错误情况编写任何代码,让系统生成运行时错误,您至少会获得 3 个优势:

  • 代码更小,更容易阅读,专注于实现的功能。
  • 在错误情况下,系统将引发符合 OTP 标准的错误,您将受益于免费的所有 OTP 机制以在适当级别处理情况。
  • 您会自动避免“烤宽面条”错误检测综合症,其中许多代码层跟踪相同的错误情况。

  • 现在您可以专注于错误管理:您将在哪里处理错误。 Erlang 提供了经典方式 trycatch语句,并具有更惯用的方式与 OTP 监督树和链接和监视机制。

    简而言之,您可以控制一个进程崩溃的后果(哪些进程会随之崩溃,哪些进程将被通知)以及重新启动它们的复杂方法。

    重要的是要记住,在 erlang 中,您通常会启动许多小进程,这些进程的作用和责任非常有限,在这种情况下,让它们崩溃并重新启动确实很有意义。

    我是 learnyousomeerlang 的粉丝您将在其中找到与错误管理相关的 3 章的网站:
  • 错误和异常
  • 错误和过程
  • 谁监督监事?
  • 关于erlang - Erlang 中的非防御性编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32815326/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com