# Ошибки и исключения

Обработка ошибок и исключительных ситуаций - это механизмы существенно отличатся по области использования. Важно различать ситуации в которых целесообразно их применять.&#x20;

Примером может служить функция проверки данных формы ввода (form validation). Некорректные данные в поле ввода приводят к генерации сообщения об ошибке. То есть проверяя данные вы обрабатываете ошибку. Ее возникновение запланировано при проектировании функции и является ее частью.&#x20;

Теперь представьте, что вы проверяете имейл на уникальность и для этого обращаетесь к базе данных. Предполагая что в какой то момент БД может перестать отвечать и вы создадите обработчик исключения. Основным маркером исключения является то, что вы можете удалить из кода его обработку и код продолжит выполнять функцию для которой он разрабатывался.

**Дополнительная информация**

* [Как правильно работать с исключениями в DDD ](https://habr.com/ru/company/true_engineering/blog/431804/)
* [Replacing Throwing Exceptions with Notification in Validations ](https://martinfowler.com/articles/replaceThrowWithNotification.html)
* [Артём Кобзарь/Дмитрий Махнёв - ненужная монада Either на практике и в теории ](https://www.youtube.com/watch?v=S0cCjbWuvzk)
* [Railway oriented programming](https://swlaschin.gitbooks.io/fsharpforfunandprofit/content/posts/recipe-part2.html)
