尝试Erlang中的catch示例

kx1ctssn  于 2022-12-08  发布在  Erlang
关注(0)|答案(3)|浏览(122)

我看了文档,但不明白try catch,有人能用一个简单的例子解释一下吗?

e7arh2l6

e7arh2l61#

我想你会喜欢LYSE关于例外的文章。

bqucvtff

bqucvtff2#

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"
abithluo

abithluo3#

If you want a single-line example to use in your Erlang shell:

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

相关问题