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