Напомню прекрасный доклад Артёма Кобзаря и Димы Махнёва — (не|ну)жная монада Either на практике и в теории
И напомню, что ошибки и исключения — это принципиально разные сущности.
Мы считаем, что исключения должны редко использоваться в рамках обычной работы программы: они должны быть зарезервированы для непредвиденных событий. Предположим, что неперехваченное исключение завершит работу вашей программы. Спросите себя: «Будет ли этот код по-прежнему выполняться, если я удалю все обработчики исключений?» Если ответ «нет», то, возможно, исключения используются в неисключительных обстоятельствах.
Dave Thomas and Andy Hunt: The Pragmatic Programmer