以下几行出现在http://aosabook.org/en/riak.html,本节第二段:15.1.Erlang简介:
"使用负数调用函数将导致运行时错误,因为没有一个条款匹配.不处理这种情况就是非防御性编程的一个例子,这是Erlang鼓励的做法."
两个问题:在Erlang中处理结果错误的惯用方法是什么?为什么这比明确覆盖所有情况要好,如OCaml或Haskell等语言?
如果您没有为错误情况编写任何代码,让系统生成运行时错误,您将获得至少3个优势:
代码更小,更易于阅读,专注于实现的功能.
在错误的情况下,系统将引发符合OTP标准的错误,您将受益于免费的所有OTP机制来处理适当级别的情况.
您自动避免"烤宽面条"错误检测综合症,其中许多代码层跟踪相同的错误情况.
现在您可以专注于错误管理:您将在哪里处理错误.Erlang提供了使用try
和catch
语句的经典方式,并且使用OTP监督树以及链接和监视器机制具有更加惯用的方式.
简而言之,您可以控制一个进程崩溃的后果(哪些进程将崩溃,哪些进程将被通知)以及重新启动它们的复杂方法.
重要的是要记住,在erlang中,你通常会启动许多角色非常有限的小进程,在这种情况下,让它们崩溃和重启真的很有意义.
我是learnyousomeerlang网站的粉丝,您可以在其中找到与错误管理相关的3章:
归档时间: |
|
查看次数: |
283 次 |
最近记录: |