【发布时间】:2016-06-17 00:39:21
【问题描述】:
在swift中,是否可以使用较短的guard let try? 并且如果进入else块则得到发生的异常?
guard let smth = try? myThrowingFunc() else {
print(error) //can I access the exception here somehow?
return
}
对
let smth: AnyObject?
do {
smth = try myThrowingFunc()
} catch let error {
print(error)
return
}
【问题讨论】:
-
我很确定试试?就像?并且只会将 smh 变成一个可选的枚举,您可以在其中根据需要打开/验证它。意思是,我认为它脱离了 do/catch 范式
-
是的,'guard let smth = ...' 会尝试解包 - 如果它失败,那么它将执行 else 块。因此,如果有可能以某种方式访问异常,这个构造可能会很棒......
-
但是谢谢,我可以理解它的工作原理并自己回答我的问题!
标签: swift exception try-catch guard