Sau khi sử dụng F # option
nhập một lúc, tôi nhận ra rằng nó có thể được sử dụng để xử lý các trường hợp ngoại lệ. Tôi có thể sử dụng một trong hai option
hoặc Exception
trong các ví dụ sau:Tùy chọn so với Ngoại lệ trong xử lý ngoại lệ
- Các
find
chức năng từ Danh sách/Array/Seq module nângKeyNotFoundException
trong những trường hợp hiếm gặp, trong khi tương ứngtryFind
đối tác trởNone
trong những tình huống này. - Khi tôi quay ngược lại (khi giải quyết N-queens, Sudoku, vv), bất cứ khi nào chi nhánh không có giải pháp, tôi có thể tăng ngoại lệ và bắt nó sau hoặc trả lại Không để khớp với giá trị đó để quay lại. Những trường hợp đó xảy ra khá thường xuyên cho đến khi chúng tôi tìm ra giải pháp.
Hiển thị của tôi là option
là phương pháp tiếp cận chức năng hơn, trong khi Exception
thường được sử dụng trong nền tảng .NET.
Sự khác biệt giữa option
và Exception
trong xử lý ngoại lệ về khả năng sử dụng, hiệu suất, v.v ... là gì? Trong trường hợp nào sử dụng một kỹ thuật tốt hơn việc sử dụng kỹ thuật kia?
Thật vậy, tôi đã từng đo điều này và thấy rằng ngoại lệ C++ chậm hơn 6 lần so với OCaml và .NET chậm hơn 600 lần so với OCaml! –