日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

erlang精要(27)-异常处理

發布時間:2025/3/12 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 erlang精要(27)-异常处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、拋出異常throw

98> c(learnerl). learnerl.erl:7: Warning: variable 'X' is unused {ok,learnerl} 99> learnerl:activation({sss,1.243}). {unfound_activation_fun,sss,1.243} 100> learnerl:activation({sigmoid,1.243}). 0.7760857759636308 101> -module(learnerl). -export([activation/1]).init(C_type)->case C_type ofsigmoid->fun(X)-> 1 /(1+math:exp(-X)) end;_-> fun(X)-> throw(unfound_activation_fun) endend.activation({C,X})->Active_fun=init(C),try Active_fun(X)catchthrow:E->{E,C,X}end.

2、產生錯誤error

25> c(learnerl). {ok,learnerl} 26> learnerl:compute_sqrt(-200). {badarith,-200} 27> learnerl:compute_sqrt(200). 14.142135623730951 28> c(learnerl). {ok,learnerl} 29> learnerl:compute_sqrt(200). 14.142135623730951 30> learnerl:compute_sqrt(-200). {error,badarith} 31> -module(learnerl). -export([compute_sqrt/1]).sqrt(X)->math:sqrt(X).compute_sqrt(X)->try sqrt(X) catcherror:E->{error,E}end.

3、綜合例子

92> c(learnerl). {ok,learnerl} 93> learnerl:compute_sqrt(209). throw:只接收不大于200的數=>209 ok 94> learnerl:compute_sqrt(20). 4.47213595499958 95> learnerl:compute_sqrt(-20). error:不能小于0=>-20 ok 96> learnerl:compute_sqrt(200). 14.142135623730951 97> learnerl:compute_sqrt(0). 0.0 98> -module(learnerl). -export([compute_sqrt/1]).sqrt(X) when (X>=0) and (X=<200) ->math:sqrt(X); sqrt(X) when X >200 ->throw("只接收不大于200的數"); sqrt(X) when X <0 ->error("不能小于0").compute_sqrt(X)->try sqrt(X) catcherror:E->io:format("~p:~ts=>~p~n",[error,E,X]);throw:Tw->io:format("~p:~ts=>~p~n",[throw,Tw,X])end.

4、終止進程
exit(Why)
終止進程,產生{‘EXIT’,PId,Why}并廣播地給當前進程鏈接的所有進程

112> c(learnerl). {ok,learnerl} 113> learnerl:compute_sqrt("iii"). exit:用戶退出=>"iii" ok 114> learnerl:compute_sqrt(-200). error:不能小于0=>-200 ok 115> learnerl:compute_sqrt(iii). exit:用戶退出=>iii ok 116> learnerl:compute_sqrt(-200). error:不能小于0=>-200 ok 117> -module(learnerl). -export([compute_sqrt/1]).sqrt(X)->case is_number(X) oftrue->get_sqrt(X);false->exit("用戶退出")end.get_sqrt(X) when (X>=0) and (X=<200) ->math:sqrt(X); get_sqrt(X) when X >200 ->throw("只接收不大于200的數"); get_sqrt(X) when X <0 ->error("不能小于0").compute_sqrt(X)->try sqrt(X) catcherror:E->io:format("~p:~ts=>~p~n",[error,E,X]);throw:Tw->io:format("~p:~ts=>~p~n",[throw,Tw,X]);exit:Et->io:format("~p:~ts=>~p~n",[exit,Et,X])end.

總結

以上是生活随笔為你收集整理的erlang精要(27)-异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。