Erlang(7):顺序程序的错误处理
显式生成错误的方法:
erlang:get_stacktrace()获得最近的栈跟踪信息。
exit(Why) 广播一个信号给当前进程链接的所有进程。 throw(Why) 抛出一个调用者可能想要捕捉的异常错误。 error(Why) 指示奔溃性错误,非常严重的错误。
捕捉错误,try...catch
try FuncOrExpressionSeq of Pattern1[when Guard1] -> Expressions1; Pattern2[when Guard2] -> Expressions2; ... catch ExceptionType1: ExPattern1 [when ExGuard1] -> ExExpressions1; ExExpressions2: ExPattern2 [when ExGuard2] -> ExExpressions2; ... after AfterExpressions end
提供了概括的信息
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 Expr catch _:_ -> ... 处理所有异常错误的代码 end
erlang:get_stacktrace()获得最近的栈跟踪信息。
有错误,就要尽量往外面抛,展现出来。让程序彻底奔溃。这是Erlang 的原则。
或许吧。
但是不是做游戏的原则。
至少不是做游戏服务端的原则。
我们可以容忍错误的存在。因为我们是快速开发。bug是修不完的。
只能建一个修一个。
人生如戏,还是戏如人生?微信公众号:传说之路
csdn博客 http://blog.csdn.net/u012175089/article/list/2