Después de usar el tipo F # option
por un tiempo, me doy cuenta de que podría utilizarse para casos excepcionales. Puedo utilizar cualquiera option
o Exception
en los siguientes ejemplos:Opción vs Excepción en el manejo de excepciones
- Los
find
funciones de la Lista/Seq módulos de matriz/planteanKeyNotFoundException
en casos poco comunes, mientras correspondientes homólogostryFind
vuelvenNone
en esas situaciones. - Cuando hago backtracking (en la solución de N-queens, Sudoku, etc.), cuando una rama no tiene solución, puedo levantar una excepción y atraparla más tarde o devolver None para que coincida con ese valor para dar marcha atrás. Esos casos ocurren bastante a menudo hasta que encontremos una solución.
Mi impresión es option
es un enfoque más funcional, mientras que Exception
es más comúnmente usado en la plataforma .NET.
¿Cuáles son las diferencias entre option
y Exception
en el manejo de excepciones en términos de usabilidad, rendimiento, etc.? ¿En qué casos usar una técnica es mejor que usar la otra?
De hecho, una vez lo medí y descubrí que las excepciones de C++ son 6 veces más lentas que OCaml y las .NET son 600 veces más lentas que OCaml. –