【发布时间】:2013-06-26 03:25:21
【问题描述】:
根据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 不满足与实现相关的约束。 [忙]
- UnsupportedOperation 在这种情况下,实现不支持重命名。 [EXDEV]
- InappropriateType 任一路径均指现有目录。 [ENOTDIR、EISDIR、EINVAL、EEXIST、ENOTEMPTY]
其中一些(isPermissionError、isDoesNotExistError)具有测试功能,但其他一些(包括我感兴趣的 UnsupportedOperation)似乎与任何东西都不对应。什么是UnsupportedOperation,我该如何测试它?
更一般地说,我应该如何找出这样的东西。我在源代码中看不到它引发的任何地方,所以我猜它是一个较低级别错误的包装器 - 但我应该如何处理这些错误?
【问题讨论】:
标签: haskell exception-handling io