尝试在erlang中捕获示例

时间:2014-05-09 13:49:46

标签: erlang riak erlang-shell erlang-ports

我按照文档但不明白尝试捕获,有人可以用一个简单的例子解释一下吗?

3 个答案:

答案 0 :(得分:5)

我想你会喜欢LYSE的article on exceptions.

答案 1 :(得分:1)

try catch 背后的想法是尝试一个表达式并在出现任何问题时捕获它。您首先尝试表达式,如果一切顺利,您将获得正常的结果。但是,如果您遇到错误,您可以捕获并处理它。

例如,获取空列表的头部会导致“错误参数”异常。例如,您可以捕获它并返回错误类型,或者捕获所有模式并返回您喜欢的任何内容。在 Erlang shell 中尝试一下!

    1> try hd(["foo","bar"]) catch error:Error -> {error,Error} end.
    "foo"
    2> try hd([]) catch error:Error -> {error,Error} end.
{error,badarg}
    3> try hd([]) catch _:_ -> "Can't take the head of an empty list" end.
"Can't take the head of an empty list"

答案 2 :(得分:0)

如果您想在 Erlang shell 中使用单行示例:

1> try exit(timeout) of _ -> not_caught catch exit:timeout -> ok end.
ok