根据the System.Directory haddock,renameFile
可能由于多种原因而失败:
其中的几个(isPermissionError,isDoesNotExistError)具有测试功能,但其他功能(包括我感兴趣的UnsupportedOperation)似乎与任何功能都不对应。什么是
UnsupportedOperation
,我该如何对其进行测试?更笼统地说,我应该如何找出类似的东西。我在源代码中的任何地方都看不到它的出现,因此我猜想它是一个围绕较低级别错误的包装器-但是我应该如何处理呢?
最佳答案
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