尝试catch_list_to_integer没有捕获错误

qua*_*ato 1 erlang

1> foo:inter().**异常错误:函数foo中的错误参数:inter/0(foo.erl,第7行)

-module(foo).
-compile(export_all).

inter() ->
  A = <<"5a">>,
  B = binary_to_list(A),
  try list_to_integer(B) of
    Result -> Result
  catch
    _ -> {error, bad_integer}
  end.
Run Code Online (Sandbox Code Playgroud)

我希望得到{error,bad_integer}.

Dog*_*ert 5

3种类型的异常二郎:error,exitthrow.catch条款具有格式Type:Pattern.如果Type未指定a,就像在代码中一样,只会throwlist_to_integer抛出异常时捕获异常error.您可以捕获所有error使用error:_或捕获任何异常使用_:_.

1> try list_to_integer("5a") of
1>   Result -> Result
1> catch
1>   _:_ -> {error, bad_integer}
1> end.
{error,bad_integer}
Run Code Online (Sandbox Code Playgroud)