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,但他们没有解释rawValues 是什么。每个rawValue背后有什么含义,还是只是区分错误的代码? @Wowbaggerandhisliquidlunch,在大多数情况下,您不需要 rawValue,命名代码就是所描述的,主要是自我描述的。如果出于任何原因发生了一些未命名的代码,则需要catch let error as NSError,即。通用方式,并从那里读取域和代码。

以上是关于FileManager 会抛出啥错误?的主要内容,如果未能解决你的问题,请参考以下文章

当整数除以零时,msvc 6 会抛出啥?

抛出啥异常? (Python)[重复]

你能在 Java 中抛出啥?

为啥 BluetoothSetLocalServiceInfo 会抛出错误 1314?

为啥 MERGE 语句会抛出唯一键约束错误

为啥 jsonwebtoken 会抛出“无效签名”错误?