【发布时间】:2018-01-12 19:28:01
【问题描述】:
我有一个关于快速错误处理的问题。在我的快速脚本中,我必须对可能引发异常的 FileManager 执行多项操作。现在我的第一个想法是,将它们全部放在一个 do-catch 块中。
do {
let fileManager = FileManager.default
try fileManager.moveItem(atPath: destination, toPath: "\(destination).old")
try fileManager.createDirectory(atPath: destination, withIntermediateDirectories: false)
...
} catch {
print(error)
exit(EXIT_FAILURE)
}
现在的问题是,我无法在 catch 块中确定哪个语句引发了错误。本地化描述也不是很有帮助(“恢复备份时出错!”)。
我也无法真正找出抛出的错误是哪种类型,因为我在 FileManager 文档中找不到任何相关内容。
我想一种可行的方法是将每个语句放在它自己的嵌套 do-catch 块中,但在我看来这看起来非常混乱且难以阅读。
所以我的问题是,如果有另一种方法来确定错误类型或将其抛出到 catch 块中的语句,或者找出每个 FileManager 语句抛出的错误类型是什么?
提前致谢, 乔纳斯
【问题讨论】:
-
查看
FileManager的moveItem方法的文档。最后有一个关于 Swift 错误处理的讨论。查看那里显示的链接。请参阅Error Handling 之一。它甚至显示了处理来自moveItem的不同错误的示例。 -
谢谢。这有帮助,但实际上并没有办法找出具体抛出了哪些错误类型,是吗?幸运的是,带有
moveItem的那个在示例中,但是对于createDirectory、removeItem、contentsOfDirectory等。我不得不猜测,CocoaError 的哪个错误会被抛出?
标签: swift error-handling nsfilemanager