43 votes

Manipulation essayer et jette dans Swift 3

Avant Swift 3, j'utilisais:

 guard let data = Data(contentsOf: url) else {
                print("There was an error!)
                return
            }
 

Cependant, je dois maintenant utiliser do , try et catch . Je ne suis pas familier avec cette syntaxe. Comment pourrais-je reproduire ce comportement?

110voto

Eric D. Points 16409

La différence ici est que Data(contentsOf: url) ne renvoie plus un optionnel, il le jette.

Vous pouvez donc l'utiliser dans Do-Catch mais sans guard :

 do {
    let data = try Data(contentsOf: url)
    // do something with data
    // if the call fails, the catch block is executed
} catch {
    print(error.localizedDescription)
}
 

Notez que vous pouvez toujours utiliser guard avec try? au lieu de try mais le message d'erreur éventuel est ignoré. Dans ce cas, vous n'avez pas besoin d'un bloc Do-Catch:

 guard let data = try? Data(contentsOf: url) else {
    print("There was an error!")
    // return or break
}
// do something with data
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X