2017-08-31 298 views
1

1> foo:inter()。 **异常错误:错误的参数 在函数foo:间/ 0(foo.erl,7号线)尝试捕捉list_to_integer不捕获错误

-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. 

我有望获得{错误,bad_integer}。

回答

5

Erlang有3 types of exceptionserror,exitthrowcatch子句的格式为Type:Pattern。当没有指定Type时(如在您的代码中),只有throw例外被捕获,而list_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}