KexAri
KexAri

Reputation: 3977

Handling try and throws in Swift 3

Before Swift 3 I was using:

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

However I now have to use do, try and catch. I'm not familiar with this syntax. How would I replicate this behaviour?

Upvotes: 43

Views: 46807

Answers (1)

Eric Aya
Eric Aya

Reputation: 70098

The difference here is that Data(contentsOf: url) does not return an Optional anymore, it throws.

So you can use it in Do-Catch but without 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)
}

Note that you could still use guard with try? instead of try but then the possible error message is ignored. In this case, you don't need a Do-Catch block:

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

Upvotes: 110

Related Questions