¿Cuándo "dejar que se bloquee" y cuándo defender el código en Erlang?

Por lo tanto, con el mantra "let it crash", el código Erlang está destinado a ser resistente a los crueles eventos mundiales, como la desconexión inesperada, la falla del hardware y las conexiones de red inestables.

Por otro lado, hayprogramación defensiva.

Al ser nuevo en Erlang, me pregunto cómo saber cuándo quiero que el proceso simplemente se bloquee y cuándo quiero defender el flujo conif, case..of, tipo guardias?

Digamos que tengo un módulo de autenticación, que puede devolvertrue/false resultado si se autentica correctamente o no. ¿Debería tener un escenario exitoso y bloquearse si la autenticación del usuario falla debido a un inicio de sesión / contraseña incorrectos?

¿Qué pasa con otros escenarios, como, si un producto no se encuentra en la base de datos o los resultados de búsqueda están vacíos?

Supongo que no puedo ignorar por completo las construcciones defensivas, ya que cualquier guardia está en su naturaleza para defender el flujo "normal" de la aplicación.

¿Existe una regla general cuando defender y cuándo estrellarse?

Respuestas a la pregunta(2)

Su respuesta a la pregunta