跳至内容

Erlang 编程/错误

来自维基教科书,自由的教学丛书

我们可以用 throw 和 catch 来处理错误。在这个例子中,参数的值会导致错误,从而抛出异常。函数 g() 只有在参数大于 12 时才会正常工作。如果参数小于 13,则会抛出异常。我们尝试在 start() 中调用 g()。如果我们遇到问题,则会在 start() 中的“case catch”结构中捕获异常。

示例程序列表

-module(catch_it).
-compile(export_all).
                                                                 %
% An example of throw and catch
                                                                 %
g(X) when X >= 13 ->
   ok;
g(X) when X < 13 ->
   throw({exception1, bad_number}).
                                                                 %
% Throw in g/1 
% Catch in start/1
                                                                 %
start(Input) ->
   case catch g(Input) of
       {exception1, Why} ->
          io:format("trouble is ~w ", [ Why ]);
       NormalReturnValue ->
          io:format("good input ~w ", [ NormalReturnValue ] )
   end.
                                                                 %
%============================================================== >%   
% sample output:
                                                                 %
8> c(catch_it).    
{ok,catch_it}
                                                                 %
9> catch_it:start(12).
trouble is bad_number ok
                                                                 %
10> catch_it:start(13).
good input ok ok
华夏公益教科书