我正处于那个阶段,我正在重构一个原型,以便更灵活。这意味着我想添加错误处理。我的应用程序非常依赖于String(contentsOf:url),这与处理文件的任何操作一样,容易出错。但是,所讨论的init方法的签名只是:
{{1}}
所以我知道它会抛出......但具体是什么?当我不知道我可能会犯的错误时,我不确定我是否理解如何处理错误。 documentation也没有说什么。我很难过?
答案 0 :(得分:1)
init(contentsOf:)
来自Foundation的NSString
API - 因此,与所有Foundation API一样,它会抛出一个描述错误的NSError
。您可以像任何其他错误一样捕获它:
do {
let str = String(contentsOf: theLocalURL)
// ...
} catch {
// Present `error.localizedDescription` to the user to let them know what went wrong
}
由于错误是NSError
,您也可以将其捕获,以检查其code
/ userInfo
:
do {
// Same as above
} catch let error as NSError {
// Inspect what went wrong.
}
至于您可能期望的具体代码,请查看NSError Codes
list中以NSFile
...开头的错误代码。如果文件不存在,公共代码可能是NSFileReadNoPermissionError
或NSFileReadNoSuchFileError
。
但是,一般情况下,您应该向用户显示错误的localizedDescription
并中止操作或重试。