Quando "deixar travar" e quando defender o código em Erlang?

Portanto, com o mantra "let it crash", o código Erlang deve ser resistente a eventos mundiais cruéis, como interrupções inesperadas, falhas de hardware e conexões de rede instáveis.

Por outro lado, háprogramação defensiva.

Sendo novo em Erlang, me pergunto, como saber quando quero que o processo acabe e quando quero defender o fluxo comif, case..of, tipo guardas?

Digamos, eu tenho um módulo de autenticação, que pode retornartrue/false resultado se autenticado com sucesso ou não. Deveria ter apenas um cenário bem-sucedido e travar se a autenticação do usuário falhar devido a login / senha incorretos?

E quanto a outros cenários, como, se um produto não for encontrado no banco de dados ou se os resultados da pesquisa estiverem vazios?

Suponho que não posso ignorar completamente as construções defensivas, pois existem guardas em sua natureza para defender o fluxo "normal" do aplicativo?

Existe uma regra de ouro quando defender e quando travar?

questionAnswers(2)

yourAnswerToTheQuestion