Когда «дать сбой» и когда защищать код в Erlang?
Таким образом, мантра Erlang с кодом «let it crash» должна быть устойчивой к таким жестоким мировым событиям, как неожиданное отключение, сбой оборудования и нестабильные сетевые подключения.
С другой стороны, естьоборонительное программирование.
Интересно, будучи новичком в Erlang, как узнать, когда я хочу, чтобы процесс просто аварийно завершился, и когда я хочу, чтобы он защищал поток с помощьюif
, case..of
типа охранников?
Скажем, у меня есть модуль аутентификации, который может вернутьtrue
/false
результат, если аутентификация прошла успешно или нет. Должен ли он иметь успешный сценарий и аварийно завершить работу, если аутентификация пользователя не удалась из-за неправильного логина / пароля?
А как насчет других сценариев, например, если продукт не найден в базе данных или результаты поиска пусты?
Полагаю, я не могу полностью игнорировать защитные конструкции, так как любые охранники по своей природе защищают «нормальный» поток приложения?
Есть ли эмпирическое правило, когда защищаться и когда терпеть крах?