Вариант и исключение в обработке исключений

После использования в течение некоторого времени типа F # option я понимаю, что его можно использовать для обработки исключительных случаев. . Я могу использовать параметр или Exception в следующих примерах:

  1. Функции find из модулей List / Array / Seq вызывают KeyNotFoundException в редких случаях, тогда как соответствующие tryFind копии возвращают None в этих ситуациях.
  2. Когда я выполняю отслеживание с возвратом (при решении N-ферзей, судоку и т. Д.), Всякий раз, когда ветвь не имеет решения, я могу либо вызвать исключение и поймать его позже, либо вернуть None для соответствия этому значению для возврата. Такие случаи происходят довольно часто, пока мы не найдем решение.

У меня сложилось впечатление, что вариант является более функциональным подходом, а Exception чаще используется в платформе .NET.

В чем разница между опцией и Исключением в обработке исключений с точки зрения удобства использования, производительности и т. Д.? В каких случаях использование одного метода лучше, чем использование другого?

10
задан pad 30 October 2012 в 21:51
поделиться