`
轮回记忆
  • 浏览: 9880 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

断言位置的选择:谁犯错谁异常(转载)

 
阅读更多
  比如某gen_server:
Erlang代码  收藏代码

    ... 
     
    hello(A,B,C) when is_atom(A),is_integer(B),is_binary(C) -> 
        gen_server:cast(?SERVER,{hello, A, B, C}). 
     
    handle_cast({hello, A, B, C}, State} -> 
         .... 
         {noreply, State}. 
     
    ... 





     将断言加在hello/3上显然比加在handle_cast/2上合理。

     如果将断言加在handle_cast上,调用发起方出错将造成此server无故重启甚至失效,无法为其他进程提供服务,而作为出错的调用方却不受影响。

     将断言加于hello上,调用方将因自己的错误发生异常,从而正确的报告异常或者拥有重启恢复的机会,也不会影响目标服务和其他进程。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics