С теоретической точки зрения. option
- это то, что вы должны использовать в тех функциях, которые являются чисто с точки зрения FP (вы можете узнать, что такое чистые функции). Исключения больше касаются нечистого мира (Как и мир ввода-вывода в Хаскеле).
Теперь, с практической точки зрения, я бы предложил использовать option
в качестве возвращаемого типа, когда логика вашего приложения говорит, что значение может быть там или не может быть, т.е. значение, которое не присутствует, является допустимым правилом приложения. Исключения - это то, что должно возникать, когда что-то происходит в логике приложения, что указывает на неправильное выполнение логики или некоторое неправильное состояние приложения, которое не ожидалось в соответствии с правилами приложения.
По сравнению с производительностью, выдача исключений POV обходится дороже (из-за разматывания стека - поиск соответствующего обработчика исключений и т. Д.) По сравнению с возвращаемыми типами опций.