我们在代码中大量使用“try”,例如 JSONSerialization、文档创建和写入、String(contentsOfFile: filePath)、NSRegularExpression、数据创建等。
Swift 中的“try”一共有三种类型,“try”“try?” “尝试!”
“尝试!”绝对是我们要避免使用的,以JSONSerialization为例,
let json = try! JSONSerialization.jsonObject(with: data!, options: [])
print(json)
在这种情况下,如果分析成功,将返回一个值,如果分析失败,程序会崩溃,这是危险的,绝对不要冒险。
“尝试?”和“尝试”是我们可以安全使用的。
如果你在使用“try?”,强烈建议“guard let”和“try?”结合使用,如果值存在,你得到值,如果值无效,你被“guard let”保护,你会得到“nil”值,程序不会崩溃。
guard let json = try? JSONSerialization.jsonObject(with: data!, options: []) else { return }
print(json)
如果你更喜欢使用“try”,那么“do catch”是一个必须和“try”一起使用的集合,如果出现无效值,就会捕获错误并返回给你,像这样
do {
let json = try JSONSerialization.jsonObject(with: data!, options: [])
} catch {
print(error.localizedDescription)
}
得出结论,“试试?”和“try”推荐使用,如果你不关心错误,使用“guard let... try?”,如果你想收集异常和错误并进一步处理它们,使用“do...catch ... try”