ios-在Swift 3中处理尝试并抛出

在Swift 3之前,我使用的是:

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

但是,我现在必须使用dotrycatch。我对这种语法不熟悉。 我将如何复制这种行为?

KexAri asked 2020-08-08T23:03:38Z
1个解决方案
107 votes

此处的区别在于,它抛出了guard,不再返回Optional了。

因此,您可以在Do-Catch中使用它,但不使用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)
}

请注意,您仍然可以将guardtry?一起使用,而不是try,但是可能的错误消息将被忽略。 在这种情况下,您不需要Do-Catch块:

guard let data = try? Data(contentsOf: url) else {
    print("There was an error!")
    // return or break
}
// do something with data
ayaio answered 2020-08-08T23:03:52Z
translate from https://stackoverflow.com:/questions/39751923/handling-try-and-throws-in-swift-3