Ich migriere meinen Code auf Swift 3 und sehe eine Reihe derselben Warnungen mit meinen do/try/catch-Blöcken. Ich möchte prüfen, ob eine Zuweisung nicht Null zurückgibt und dann etwas auf die Konsole drucken, wenn es nicht funktioniert. Der Catch-Block sagt, dass er "nicht erreichbar ist, weil keine Fehler geworfen werden". Ich möchte alle Fehler mit einem Catch-Block abfangen.Fehlerbehandlung in 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")
}
Wie würde ich einen richtigen try catch-Block schreiben, der mit Zuordnungsfehlern umgehen würde?
Tatsächlich ist die 'try' geschrieben kurz vor dem Werfen Methode werden müssen, anstatt vor dem Variable, die das Ergebnis enthält - 'xmlString = try String (...' aber wirft diese Methode wirklich ** einen Fehler in Swift 3? – vadian
Die einzige Sache ist, wenn sie eine Zuweisung von null zurückgibt. Warum würde der catch blockieren aber immer noch unerreichbar? – Bleep
Ein 'do - catch' Block req hat mindestens eine Methode, die einen Fehler auslöst. 'String (contentsOfURL:' scheint dies nicht zu tun. Übrigens: Ich bezweifle, dass 'String (contentsOfURL: 'wird in Swift 3 – vadian