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

显式生成错误的方法:
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是修不完的。

只能建一个修一个。




转载于:https://www.cnblogs.com/fablegame/p/6430188.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值