是否可以使用“try?”在guard-statement中检索异常?

时间:2016-03-03 15:33:42

标签: swift exception try-catch guard

在swift中,如果输入else块,是否可以使用较短的guard let try? 获取发生的异常?

guard let smth = try? myThrowingFunc() else {
    print(error) //can I access the exception here somehow?
    return
}

VS

let smth: AnyObject?
do {
    smth = try myThrowingFunc()
} catch let error {
    print(error)
    return
}

1 个答案:

答案 0 :(得分:5)

我在“The Swift Programming Language(Swift 2.2 Prerelease)”中找到了第42页,其中明确说明了以下内容:

  

处理错误的另一种方法是使用try?将结果转换为可选项。如果函数抛出错误,将丢弃特定错误,结果为nil。否则,结果是一个可选的,包含函数返回的值。

所以,这更像是对苹果的功能请求。事实上,这里已经讨论过这个话题了:

http://thread.gmane.org/gmane.comp.lang.swift.evolution/8266