一个badmatch错误引发的思考

 今天上午一位同事的程序遇到一�����},�f是加了很少的一�c代�a之後,昨天咝械暮煤玫某绦蚩�是�箦e,又�o法找到�e�`在哪�e,花了他一上午,搞的他很�d��,代�a具�w是�@�拥�:

  
  
  
  
  1. NRole = add_honor_timer(NRole), 
  2. case lists:member(HonorId, ?add_and_use_honors) of 
  3.     true -> 
  4.         case use_honor(HonorId, NRole) of 
  5.             {ok, NewRole} ->  
  6.                 role:pack_send(Pid, 13001, honors(NewRole)), 
  7.                 {ok, NewRole}; 
  8.             _ -> {ok, NRole} 
  9.         end
  10.     false -> 
  11.         {ok, NRole} 
  12. end

他增加的代�a�]在�@�e�@示出�恚�很小的一段,打印出�淼腻e�`提示�@示是第6行出�e

  
  
  
  
  1. {'EXIT',{{badmatch......line 6}}} 

他就一��人在那�e�m�Y不停的找�@行,�l�F�e面的���]���},很ok,後���在找不到�槭颤N回�蟪龅�6行的badmatch,叫我就�^去看看,一看badmatch�e�`,第6行一直咝械暮煤玫模�肯定是����Y��改�了,哪�e匹配不上去了,往上一看,原�磉@位同�W敲代�a的�r候敲�e�`,第一行明�@左�和右�匹配不上(右�有改��@�����),�@�e才是badmatch的�e�`,����男掠���量就好了:

  
  
  
  
  1. NRole1 = add_honor_timer(NRole), 

下面的代�a也用新�量就解�Q了�@�����},�F在回�^�^�恚�至於�槭颤N�e�`位置提示不准�_的���},���是他只是��B更新了代�a,�e�`��的行�颠�是原�淼奈恢茫�我提意�他重�⑾掠τ贸绦颍��e�`��的位置肯定就�α耍�果然,重�⒅�後,提示他原�淼拇��a第1行犯了badmatch�e�`。

通�^�@�����}可以看出�恚�越是有了一定��的�_�l人�T,在他失�`的�r候,犯的�e�`越低�,越是�Z法�用娴模�他自己就越是不易�l�F,因��男难e�X得,我不可能犯�@�N基本的�Z法�e�`,都往��方面去排了,�е伦约赫垓v自己。�@就是�_�l�^程中矛盾,�r刻要�慎,警惕自己。不要把���}想的太�}�s太高端了,淡定一些。

你可能感兴趣的:(erlang,警惕,badmatch)