exit(Why) 广播一个信号给当前进程连接的全部进程。 throw(Why) 抛出一个调用者可能想要捕捉的异常错误。 error(Why) 指示奔溃性错误,很是严重的错误。
捕捉错误,try...catchthis
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
提供了归纳的信息code
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
或许吧。it
可是不是作游戏的原则。io
至少不是作游戏服务端的原则。class
咱们能够容忍错误的存在。由于咱们是快速开发。bug是修不完的。erlang
只能建一个修一个。