Erlang(7):顺序程序的错误处理

来源:互联网 发布:淘宝发布宝贝没有品牌 编辑:程序博客网 时间:2024/05/23 17:30
显式生成错误的方法:
exit(Why) 广播一个信号给当前进程链接的所有进程。throw(Why) 抛出一个调用者可能想要捕捉的异常错误。error(Why) 指示奔溃性错误,非常严重的错误。


捕捉错误,try...catch

try FuncOrExpressionSeq ofPattern1[when Guard1] -> Expressions1;Pattern2[when Guard2] -> Expressions2;...catchExceptionType1: ExPattern1 [when ExGuard1] -> ExExpressions1;ExExpressions2: ExPattern2 [when ExGuard2] -> ExExpressions2;...afterAfterExpressionsend

提供了概括的信息


catch 语句,比try...catch更加早引入Erlang。

提供了详细的栈跟踪信息。


经常出现错误的时候的代码:

case f(x) of    {ok, Val} ->         do_some_thing_with(Val);    {error, Why} ->          %% ... 处理这个错误...end,...


错误可能有但罕见时的代码

try my_func(X)catch    throw:{thisError, X} -> ...    throw:{someOtherError, X} -> ...end


捕捉一切异常错误:

try Exprcatch    _:_ -> ... 处理所有异常错误的代码end

erlang:get_stacktrace()获得最近的栈跟踪信息。


有错误,就要尽量往外面抛,展现出来。让程序彻底奔溃。这是Erlang 的原则。

或许吧。

但是不是做游戏的原则。

至少不是做游戏服务端的原则。

我们可以容忍错误的存在。因为我们是快速开发。bug是修不完的。

只能建一个修一个。




1 0
原创粉丝点击