我看了文档,但不明白try catch,有人能用一个简单的例子解释一下吗?
e7arh2l61#
我想你会喜欢LYSE关于例外的文章。
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"
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
3条答案
按热度按时间e7arh2l61#
我想你会喜欢LYSE关于例外的文章。
bqucvtff2#
try catch背后的想法是尝试一个表达式,并在出现任何错误时捕获它。首先尝试该表达式,如果一切顺利,您将得到正常的结果。但如果遇到错误,您可以捕获它并处理它。
例如,取一个空列表的头会导致一个“错误参数”异常。你可以捕获它并返回错误类型,或者捕获所有模式并返回你喜欢的任何类型。在Erlang shell中试试吧!
abithluo3#
If you want a single-line example to use in your Erlang shell: