gpt4 book ai didi

erlang - 我应该使用 exit、error 还是 throw 哪一个?

转载 作者:行者123 更新时间:2023-12-04 04:59:55 24 4
gpt4 key购买 nike

你能告诉我什么时候使用 throw , exiterror ?

1> catch throw ({aaa}).
{aaa}
2> catch exit ({aaa}).
{'EXIT',{aaa}}
3> catch gen_server:call(aaa,{aaa}).
{'EXIT',{noproc,{gen_server,call,[aaa,{aaa}]}}}
4> catch exit("jaj")
{'EXIT',"jaj"}

最佳答案

3 可以用 try ... catch 捕获的类:throw , errorexit .

  • throw使用 throw/1 生成并且旨在用于非本地返回并且不会生成错误,除非它没有被捕获(当您收到 nocatch 错误时)。
  • error当系统检测到错误时生成。您可以使用 error/1 显式生成错误.系统还在生成的错误值中包含一个堆栈跟踪,例如 {badarg,[...]} .
  • exit使用 exit/1 生成并且旨在表明这个过程即将结束。
  • error/1的区别和 exit/1不是那么好,它更多的是关于错误生成的堆栈跟踪增强的意图。

    在做 catch ...的时候,它们之间的区别其实更明显。 : 当 throw/1然后使用 catch只返回抛出的值,正如非本地返回所预期的那样;当 error/1然后使用 catch返回 {'EXIT',Reason}哪里 Reason包含堆栈跟踪;而来自 exit/1 catch也返回 {'EXIT',Reason}但是 Reason只包含实际的退出原因。 try ... catch看起来它等同于它们,但它们非常不同。

    关于erlang - 我应该使用 exit、error 还是 throw 哪一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13618261/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com