FileManager 会抛出啥错误?
Posted
技术标签:
【中文标题】FileManager 会抛出啥错误?【英文标题】:What errors does FileManager throw?FileManager 会抛出什么错误? 【发布时间】:2020-02-16 00:00:51 【问题描述】:FileManager
的方法会抛出哪些错误?具体来说,我对attributesOfItem(atPath:)
可能引发的错误感兴趣。
这就是我想使用它的方式:
do
let inode = try FileManager.default.attributesOfItem(atPath: somePath)[.systemFileNumber]
catch SomeError.someSpecificError (let someContext)
/* implementation omitted... */
【问题讨论】:
使用try?
它永远不会抛出任何东西。它将返回一个可选而不是抛出错误。您需要使用try
和简单的 catch print(error)
@LeoDabus 感谢您指出这一点。这是一个错字。我打算写try
而不是try?
【参考方案1】:
可能如下所示(在CocoaError
的文档中查看更多与文件相关的常量)
do
let inode = try FileManager.default.attributesOfItem(atPath: somePath)[.systemFileNumber]
catch CocoaError.fileNoSuchFile
print("Error: no such file exists")
catch CocoaError.fileReadNoPermission
print("Error: you don't have permissions")
catch
// something unknown
【讨论】:
谢谢!我读了CocoaError
的documentation 和source,但他们没有解释rawValue
s 是什么。每个rawValue
背后有什么含义,还是只是区分错误的代码?
@Wowbaggerandhisliquidlunch,在大多数情况下,您不需要 rawValue,命名代码就是所描述的,主要是自我描述的。如果出于任何原因发生了一些未命名的代码,则需要catch let error as NSError
,即。通用方式,并从那里读取域和代码。以上是关于FileManager 会抛出啥错误?的主要内容,如果未能解决你的问题,请参考以下文章