快乐的倒腾之try-catch学习

-module(tryCatch).
-export([generate/1, demo/0]).
generate(1) -> a;
generate(2) -> throw(a);
generate(3) -> exit(a); 
generate(4) -> {'exit', a};
generate(5) -> erlang:error(a).

demo()->
    [catcher(I) || I<-[1,2,3,4,5,6]].
catcher(N)->
	try generate(N) of
	    Val ->
		{N, normal, Val}
        catch
            throw:X ->
	        {N, caught, thrown, X};
	    exit:X  ->
		{N, caught, exited, X};
	    error:X ->
		{N, caught, error, X}
	 end.
    

 

运行结果:

6> tryCatch:demo().
[{1,normal,a},
 {2,caught,thrown,a},
 {3,caught,exited,a},
 {4,normal,{exit,a}},
 {5,caught,error,a},
 {6,caught,error,function_clause}]

 

基偶数列表查找

odds_and_evens(L)->
    Odds=[X || X<-L, (X rem 2)=:=1],
    Evens=[X||X<-L, (X rem 2)=:=0],
    {Odds, Evens}.

odds_and_evens_acc(L)->
    odds_and_evens_acc(L, [], []).
odds_and_evens_acc([H|T], Odds, Evens)->
    case (H rem 2) of
	1->
	    odds_and_evens_acc(T, [H|Odds], Evens);
	0 ->
	    odds_and_evens_acc(T, Odds, [H|Evens])
    end;
odds_and_evens_acc([], Odds, Evens) ->
    {Odds, Evens}.
 

 

运行结果:

51> tryCatch:odds_and_evens([1,5,6,8,4,15,42,43]).
{[1,5,15,43],[6,8,4,42]}
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


                            

你可能感兴趣的:(快乐的倒腾之try-catch学习)