處理我需要幫助瞭解三個哈斯克爾的使用功能異常哈斯克爾
- 試(
Control.Exception.try :: Exception e => IO a -> IO (Either e a)
) - 趕上(
Control.Exception.catch :: Exception e => IO a -> (e -> IO a) -> IO a
) - 手柄(
Control.Exception.handle :: Exception e => (e -> IO a) -> IO a -> IO a
)
我需要知道幾件事:
- 什麼時候使用哪個功能?
- 如何用一個簡單的例子來使用這個函數?
- catch和handle的區別在哪裏?他們只有不同的順序才具有幾乎相同的簽名。
我會盡量記下我的考驗,希望你能幫助我:
嘗試
我有這樣一個例子:
x = 5 `div` 0
test = try (print x) :: IO (Either SomeException())
我有兩個問題:
如何設置自定義錯誤輸出?
我能做些什麼來設置所有錯誤SomeException,所以我不應該寫
:: IO (Either SomeException())
捕獲/嘗試
你能告訴我有一個自定義的錯誤輸出一個簡短的例子?
Re:3 - 閱讀[精細手冊](http://hackage.haskell.org/packages/archive/base/latest/doc/html/Control-Exception-Base.html):[handle - 一個版本與爭論交換的爭論;在處理程序的代碼更短的情況下很有用](http://hackage.haskell.org/packages/archive/base/latest/doc/html/Control-Exception-Base.html#v:handle)。 – 2011-05-15 16:26:02