什么时候去;让它崩溃吧。”;什么时候在Erlang中保护代码?

什么时候去;让它崩溃吧。”;什么时候在Erlang中保护代码?,erlang,Erlang,因此,有了“让它崩溃”的咒语,Erlang代码就意味着能够抵御残酷的世界事件,如意外拔掉插头、硬件故障和不稳定的网络连接 另一方面,也存在一些问题 作为Erlang的新手,我想知道,如何知道何时我希望进程崩溃,何时我希望它用if,case..of,键入guards来保护流 比如说,我有一个身份验证模块,如果身份验证成功与否,它可以返回true/false结果。如果由于错误的登录/密码导致用户身份验证失败,它是否应该有成功的场景和崩溃 如果在数据库中找不到产品,或者搜索结果为空,那么其他情况又如何

因此,有了“让它崩溃”的咒语,Erlang代码就意味着能够抵御残酷的世界事件,如意外拔掉插头、硬件故障和不稳定的网络连接

另一方面,也存在一些问题

作为Erlang的新手,我想知道,如何知道何时我希望进程崩溃,何时我希望它用
if
case..of
,键入guards来保护流

比如说,我有一个身份验证模块,如果身份验证成功与否,它可以返回
true
/
false
结果。如果由于错误的登录/密码导致用户身份验证失败,它是否应该有成功的场景和崩溃

如果在数据库中找不到产品,或者搜索结果为空,那么其他情况又如何呢

我想,我不能完全忽略防御结构,因为任何防护都是为了保护应用程序的“正常”流

什么时候防御什么时候崩溃有经验法则吗?

正如弗雷德·赫伯特在——

如果我知道如何处理错误,好吧,我可以这样做 具体错误。否则,就让它崩溃吧


我要说的是,身份验证错误、空搜索结果等都是预期的错误,这些错误需要用户做出适当的响应。

我认为在这种情况下实际上没有经验法则

在我看来,只要你知道如何处理一个预期的错误,就去处理它。在身份验证的情况下,我并不认为这是一个实际的错误,这是一种正常的行为,所以请继续写几行代码来处理这个特定的情况。
相反,网络故障可能是由于各种原因而发生的,它们实际上并不是代码正常行为的一部分,因此在本例中,我将采用“让它崩溃”的理念

不管怎么说,当使用let it crash时,您当然仍然需要处理进程崩溃的情况(即使用链接和监视器并重新启动进程)

也请检查一下。你可能会读到更多关于它和