根据the System.Directory haddock,renameFile
可能会因多种原因而失败:
其中一些(isPermissionError,isDoesNotExistError)具有测试功能,但其他(包括我感兴趣的UnsupportedOperation)似乎并不对应任何东西。什么是UnsupportedOperation
,我该如何测试呢?
更一般地说,我应该如何找出这样的东西。我无法在源代码中看到它所引发的任何地方,所以我猜它是一个较低级别错误的包装 - 但我应该如何处理它们?
答案 0 :(得分:5)
UnsupportedOperation
是ghc-specific。因此,您必须导入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