我將我的代碼遷移到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