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