Если вы не кодировать ничего для случаев ошибок, позволяя систему генерации ошибки во время выполнения вы получите по крайней мере 3 преимущества:
код меньше, легче читать, ориентированное на функцию реализации.
В случае ошибок система поднимет ошибку, совместимую со стандартом OTP, вы получите бесплатно все механизмы OTP для обработки ситуации на соответствующем уровне.
вы автоматически избегаете синдрома обнаружения ошибок «лазаньи», где многие слои кода отслеживают один и тот же случай ошибки.
Теперь вы можете сосредоточиться на управлении ошибками: где вы будете обрабатывать ошибки. Erlang предлагает классический способ с операторами try
и catch
и имеет более идиоматический путь с деревом наблюдения OTP и механизмом связи и мониторинга.
В нескольких словах у вас есть контроль над последствием однократного сбоя процесса (какие процессы будут с ним связаны, какие процессы будут проинформированы) и сложные средства для их перезапуска.
Важно помнить, что в erlang вы, как правило, запускаете много мелких процессов, которые имеют очень ограниченную роль, ответственность, и в этом случае позволить им сбой и перезапуск действительно имеет смысл.
Я фанат learnyousomeerlang веб-сайт, где вы найдете 3 главы, связанные с управлением ошибки:
- Ошибки и исключения
- Ошибки и процессы
- наблюдающий контролеры?