После использования типа F # option какое-то время я понимаю, что он может использоваться для обработки исключительных случаев. Я могу использовать либо option, либо Exception в следующих примерах:
-  Функции findиз модулей List/Array/Seq поднимаютKeyNotFoundExceptionв необычных случаях, а соответствующиеtryFindкопии возвращаютNoneв этих ситуациях.
- Когда я возвращаюсь назад (в решении N-queens, Sudoku и т.д.), всякий раз, когда у ветки нет решения, я могу либо возбудить исключение, либо поймать его позже, либо вернуть None, чтобы соответствовать этому значению для возврата. Эти случаи случаются довольно часто, пока мы не найдем решение.
Мое впечатление option - более функциональный подход, а Exception чаще используется в платформе .NET.
В чем разница между option и Exception в обработке исключений с точки зрения удобства использования, производительности и т.д.? В каких случаях использование метода лучше, чем использование другого?
