Mein Verständnis von try?
war, dass, wenn der Ausdruck nach try?
ausgewertet wird, nil
zurückgegeben wird, wenn es eine Ausnahme gibt, andernfalls wird der Rückgabewert der Funktion zurückgegeben.versuchen? propagiert eher als Null zurück
Wenn ich den folgenden Code ausführen:
guard let istream = InputStream(url: url),
let ambiguousObj = try? JSONSerialization.jsonObject(with: istream, options: []),
let jsonObj = ambiguousObj as? [[String: Any]] else {
throw ExportError.recoveredParseFailed
}
Ich erhalte eine Fehlermeldung über in die zweite Zeile im Zusammenhang:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[NSJSONSerialization JSONObjectWithStream:options:error:]: stream is not open for reading'
Ich verstehe, wie die Fehler zu beheben. (ich brauchte istream.open()
zu nennen)
Aber, könnte mir jemand helfen zu verstehen, warum try?
nicht die Ausnahme in diesem Fall fangen hat?
Haben Sie den obigen Code in 'do {} catch {}' block hinzugefügt? –
@BalajiGalave OP benutzt 'try?', Nicht 'try', keine Notwendigkeit für einen Do-Catch-Block. – Moritz
Ja, ich habe es verstanden. Wir brauchen es nicht, während Versuch optional ist –