Imp*_*ive 5 io haskell exception-handling
根据System.Directory haddock,renameFile可能由于多种原因而失败:
其中一些(isPermissionError,isDoesNotExistError)具有测试功能,但其他(包括我感兴趣的UnsupportedOperation)似乎并不对应任何东西.我UnsupportedOperation可以测试它是什么以及如何测试?
更一般地说,我应该如何找出这样的东西.我无法在源代码中看到它所引发的任何地方,所以我猜它是一个包含较低级别错误的包装器 - 但我应该如何处理这些?
UnsupportedOperation是ghc特定的.所以你必须导入GHC.IO.Exception,它包含检查异常类型所需的一切.
这是一个例子:
import Control.Exception
import GHC.IO.Exception
main :: IO ()
main = do
action `catch` (\(IOError _ UnsupportedOperation _ _ _ _) -> print "UnsupportedOperation")
where
action = throw $ IOError Nothing UnsupportedOperation "loc" "desc" Nothing Nothing
Run Code Online (Sandbox Code Playgroud)