erlang 关于异常

来源:互联网 发布:北斗神拳 崇明 岛 知乎 编辑:程序博客网 时间:2024/06/04 00:35

(1)erlang的三个异常原语:

exit(why)

throw(why)

erlang:error(why)

三个原语的运行结果:

(2)try  catch 捕获异常

test()->[catcher(I)||I<-[1,2,3,4,5]].generate_exception(1)->a;generate_exception(2)->{'EXIT',test};generate_exception(3)->throw(test);generate_exception(4)->exit(test);generate_exception(5)->erlang:error(test).catcher(N)->try generate_exception(N) ofVal->{N,normal,Val}catchthrow:X->{N,caught,throw,X};exit:X->{N,exit,throw,X};error:X->{N,error,throw,X}end.

运行test()函数结果


分析:

try -catch中的

throw:X->{N,caught,throw,X};exit:X->{N,exit,throw,X};error:X->{N,error,throw,X}

throw:X,exit:X,error:X表示当捕获到这三个异常原语是,exit(why),throw(why),erlang:error(why)执行其函数{N,caught,throw,X},{N,caught,exit,X},{N,caught,error,X}

如果没有捕获到这三个异常原语,则执行Val->{N,normal,Val}

如果没有捕获异常,则在遇到三个异常原语时,会自动退出进程


原创粉丝点击