all! 我有點困惑。在Haskell(ghc)Control.Exception中,try和catch的區別
在庫Control.Exception中的文檔和代碼之間是否存在不一致?
該文檔說,函數'catch'在處理函數 上使用函數'mask',但函數try不使用函數掩碼。
但代碼表示函數'try'使用函數'catch'。
我認爲 如果函數「抓」使用功能「面具」 和功能「嘗試」使用功能「捕捉」,然後 功能「嘗試」使用功能「面具」。
在GHC基礎包的Control.Exception,該文件說
「有周圍的每一個異常處理程序隱含面具到catch系列函數的調用。這是因爲這是你最需要的是什麼 - 它消除了啓動一個異常處理程序時的共同競爭條件,因爲如果一個異常處理程序立即到達,堆棧上可能沒有異常處理程序來處理另一個異常。 ,我們有時間在被中斷之前安裝一個新的異常處理程序,如果這不是默認的,那麼就需要編寫如
mask $ \restore ->
catch (restore (...))
(\e -> handler)
如果需要在異常處理程序中再次解除異步異常,還可以在那裏使用恢復。
請注意,嘗試和朋友沒有類似的默認值,因爲在這種情況下沒有異常處理程序。不要嘗試從異步異常中恢復。 」
但是,代碼說
「嘗試=趕上(A >> = \ V> - 回報(右五))(。\ E - >收益率(左五))」
下謝謝我。現在站立。 – YoshikuniJujo