在使用F#option
類型一段時間後,我意識到它可以用於處理異常情況。我可以在以下實施例中使用兩種或option
Exception
:選項vs異常處理異常
- 的
find
功能從列表/陣列/ SEQ模塊在罕見的情況下提高KeyNotFoundException
,而對應tryFind
同行在這些情況下返回None
。 - 當我回溯(在解決N皇后,數獨等),只要分支無解,我可以拋出一個異常,後來將其接住或返回無以匹配值原路返回。這些情況經常發生,直到我們找到解決方案。
我的印象是option
是一種更爲實用的方法,而Exception
更常用於.NET平臺。
option
和Exception
在異常處理方面的可用性,性能等方面有什麼區別?在哪些情況下使用一種技術比使用另一種更好?
事實上,我曾測量過這一點,發現C++異常比OCaml慢6倍,而.NET的速度比OCaml慢600倍! –