3
當我使用抓,我得到這樣的警告:如何正確使用漁獲物?
Warning: In the use of `catch'
(imported from System.IO.Error):
Deprecated: "Please use the new exceptions variant, Control.Exception.catch"
我試着使用Control.Exception.catch代替,但我一直在追逐的錯誤下來太多的鼠洞。有人可以發佈一個示例,其中catch的第2個參數捕獲getTemporaryDirectory拋出的UnsupportedOperation錯誤嗎?
tempdir <- catch (getTemporaryDirectory)
(\e -> return ".")
而且,我怎麼使用在catch文檔捕捉語法:
catch f (\e -> ... (e :: SomeException) ...)
我已經試過了語法,我能想到的每一個變化,我總是得到一個錯誤;似乎不可能將類型註釋(?)括在類似於lambda中的括號中。我認爲文檔非常差。不幸的是,這似乎是文檔編寫者渴望的標準。
」不是個是否認爲所有例外都是不好的做法?我試圖限制捕獲只捕獲UnsupportedOperation。當我使用e :: UnsupportedOperation時,我得到了類型構造函數或類UnsupportedOperation。我還會注意到,我看起來很高,在haskell文檔中查看haskell例外列表無濟於事。 – 7stud 2013-05-13 18:16:10
哦!您可以捕獲IOException,然後使用System.IO.Error中的函數來確定它是哪種類型的IOException。但是,最新的'base'沒有'UnsupportedOperation'' IOException'。它有一個非法的操作錯誤,你可以用'isIllegalOperation'來測試,但是我需要檢查這個函數是否是正確的例外。等一下。 – 2013-05-13 18:24:06
@ 7stud對不起,我找不出它會拋出哪個異常。 :(你現在最好的選擇就是捕捉'IOException'。 – 2013-05-13 18:44:14