gpt4 book ai didi

Haskell:捕获低级 IO 异常

转载 作者:行者123 更新时间:2023-12-04 19:09:05 24 4
gpt4 key购买 nike

根据 the System.Directory haddock , renameFile可能会因多种原因而失败:

  • HardwareFault 发生物理 I/O 错误。 [EIO]
  • InvalidArgument 任一操作数不是有效的文件名。 [ENAMETOOLONG, ELOOP]
  • isDoesNotExistError/NoSuchThing 原始文件不存在,或者没有目标路径。 [ENOENT, ENOTDIR]
  • isPermissionError/PermissionDenied 进程没有足够的权限来执行操作。 [EROFS、EACCES、EPERM]
  • ResourceExhausted 没有足够的资源来执行操作。 [EDQUOT、ENOSPC、ENOMEM、EMLINK]
  • UnsatisfiedConstraints 不满足依赖于实现的约束。 [EBUSY]
  • UnsupportedOperation 在这种情况下,实现不支持重命名。 [EXDEV]
  • InproperType 任一路径均指现有目录。 [ENOTDIR、EISDIR、EINVAL、EEXIST、ENOTEMPTY]

  • 其中一些(isPermissionError、isDoesNotExistError)具有测试功能,但其他(包括我感兴趣的 UnsupportedOperation)似乎不对应任何内容。什么是 UnsupportedOperation我该如何测试?

    更一般地说,我应该如何去找出这样的东西。我在源代码中看不到它引发的任何地方,所以我猜它是一个较低级别错误的包装器 - 但我应该如何处理这些错误?

    最佳答案

    UnsupportedOperationghc-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

    关于Haskell:捕获低级 IO 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17363277/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com