dre*_*ter 3 string try-catch swift
斯威夫特 4 / Xcode 9.3 / iOS
\n\n我正在使用String(contentsOf: url),在某些情况下我会收到错误,因为 URL 引用的文件不存在。我想处理特定的错误情况。
\n\n我知道我可以先检查文件是否存在,但我想改为处理错误情况。
\n\n现在我正在做:
\n\nlet data = try String(contentsOf: url)\nRun Code Online (Sandbox Code Playgroud)\n\n到目前为止,我一直在捕获所有错误,例如:
\n\ndo {\n let data = try String(contentsOf: url)\n //<other code here>\n} catch let error {\n fatalError("bad error: \\(error)")\n}\nRun Code Online (Sandbox Code Playgroud)\n\n当我尝试从中提取的特定文件(从给定的 URL)不存在时,我会收到如下错误:
\n\nbad error: Error Domain=NSCocoaErrorDomain Code=260 "The file \xe2\x80\x9cwhatever.json\xe2\x80\x9d couldn\xe2\x80\x99t be opened because there is no such file." UserInfo={NSFilePath=/Users/myname/Library/Developer/CoreSimulator/Devices/6529F22A-5234-49D7-9BB3-B9C71474CC53/data/Containers/Data/Application/005C1F55-07E8-4CF4-86FD-2F00B1144FD4/Documents/whatever.json, NSUnderlyingError=0x608000058180 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}\nRun Code Online (Sandbox Code Playgroud)\n\n如何单独捕获此错误,以便将其与其他错误分开处理?我已经尝试过CocoaError.fileNoSuchFile和 POSIX 错误域中的几个。
\n\n谢谢!
\n好吧,我已经为此奋斗了一段时间,当我发布后,我最终解决了这个问题。
答案是CocoaError.fileReadNoSuchFile。我一直在尝试CocoaError.fileNoSuchFile。
答案如下:
do {
let data = try String(contentsOf: url)
//<other code here>
} catch CocoaError.fileReadNoSuchFile {
print("CAUGHT IT!")
} catch let error {
fatalError("bad error: \(error)")
}
Run Code Online (Sandbox Code Playgroud)
谢谢!