首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Erlang的非防御性编程

Erlang的非防御性编程
EN

Stack Overflow用户
提问于 2015-09-28 03:32:13
回答 1查看 420关注 0票数 6

在本节的第二段中,http://aosabook.org/en/riak.html中出现了以下几行:15.1。Erlang简介:

使用负数调用函数将导致运行时错误,因为所有子句都不匹配。不处理这种情况是非防御性编程的一个例子,Erlang鼓励这样做。

两个问题:在Erlang中,处理产生的错误的惯用方法是什么?为什么这要比在OCaml或Haskell这样的语言中显式覆盖所有情况更好呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-28 04:32:38

如果不为错误用例编写代码,让系统生成运行时错误,则至少有三个优点:

  • 代码较小,易于阅读,重点在于功能的实现。
  • 在错误情况下,系统将引发符合OTP标准的错误,您将受益于免除所有OTP机制来处理适当级别的情况。
  • 您可以自动避免“千层面”错误检测综合症,其中许多代码层跟踪相同的错误案例。

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

简单地说,您可以控制一个进程崩溃的后果(哪些进程将与其崩溃,哪些进程将被告知)以及重新启动它们的复杂方法。

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

我是learnyousomeerlang网站的粉丝,您可以在这里找到与错误管理相关的三个章节:

  • 错误和例外
  • 错误和过程
  • 监督监督的是谁?
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32815326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档