我有这个代码
let path = self.userDesktopDirectory + "/Library/Preferences/.GlobalPreferences.plist"
let dictRoot = NSDictionary(contentsOfFile: path)
if let dict = dictRoot{
try print(dict["AppleLocale"] as! String)
}
如果值“ AppleLocale”不存在,脚本将崩溃。我必须添加些什么来“捕获”错误并避免崩溃?
答案 0 :(得分:0)
如果值“ AppleLocale”不存在,脚本将崩溃。我什么 必须添加“捕获”错误并避免崩溃?
取决于导致崩溃的原因。提及“如果值AppleLocale
不存在”,则表示崩溃的原因是强制转换:
dict["AppleLocale"] as! String
可能与try
无关,而是:
在展开可选值时意外发现nil
表示在某个时刻dict["AppleLocale"]
可能是nil
,或者即使它包含的值不是字符串,也会崩溃( optional )。您必须确保dict["AppleLocale"]
是有效的字符串(而不是nil
),这样做的方法不止一种,例如,您可以进行可选绑定,就像这样:
let path = self.userDesktopDirectory + "/Library/Preferences/.GlobalPreferences.plist"
let dictRoot = NSDictionary(contentsOfFile: path)
if let dict = dictRoot{
if let appleLocale = dict["AppleLocale"] as? String {
print(appleLocale)
} else {
// `dict["AppleLocale"]` is nil OR contains not string value
}
}
实际上,我认为您在这种情况下不必处理try
。