第7章 错误处理

翻译:丁豪
校对:连城

即便是Erlang程序员也难免会写出有问题的程序。代码中的语法错误(和一些语义错误)可以借助编译器检测出来,但程序仍可能含有逻辑错误。对需求理解的偏差或对需求实现的不完备所造成的逻辑错误只能通过大量的一致性测试来检测。其他的错误则以运行时错误的形式出现。

函数是在Erlang进程中执行的。函数可能出于多种原因而失败,比如:

  • 一次匹配操作失败
  • 使用错误的参数调用BIF
  • 我们可能打算对一个算术表达式求值,然而其中的一个项式并不是数值

Erlang本身当然无法修正这些情况,但它为程序员提供了一些检测和处理失败情况的机制。借助这些机制,程序员可以设计出健壮和容错的系统。Erlang具备如下机制:

  • 监视表达式的求值
  • 监视其他进程的行为
  • 捕获对未定义函数的求值