我将我的代码迁移到Swift 3,并看到一堆与我的do/try/catch块相同的警告。我想检查一个赋值是否不返回nil,如果它不起作用,则将其输出到控制台。 catch块表示“无法访问,因为在'do'块中没有引发错误”。我想用一个catch块捕捉所有错误。错误处理Swift 3
let xmlString: String?
do{
//Warning for line below: "no calls to throwing function occurs within 'try' expression
try xmlString = String(contentsOfURL: accessURL, encoding: String.Encoding.utf8)
var xmlDict = XMLDictionaryParser.sharedInstance().dictionary(with: xmlString)
if let models = xmlDict?["Cygnet"] {
self.cygnets = models as! NSArray
}
//Warning for line below: "catch block is unreachable because no errors are thrown in 'do' block
} catch {
print("error getting xml string")
}
我该如何编写一个适当的try catch块来处理赋值错误?
其实'try'必须投掷方法前右前书面而非包含结果的变量 - 'xmlString = try String(...'但是这样做真的**抛出** Swift 3中的错误? – vadian
唯一的是如果它返回一个赋值为nil。为什么catch块仍然无法访问? – Bleep
'do - catch' block req要求至少有一个引发错误的方法。 'String(contentsOfURL:'似乎并没有这样做顺便说一句:我怀疑'String(contentsOfURL:'将在if(xmlString!= nil)是否更好地检查赋值的情况下在Swift 3 – vadian