当使用try?
(可选的try)来调用没有返回值的throw函数时,错误会被忽略吗?
func throwingVoidFunction() throws { . . . }
try? throwingVoidFunction()
我预计编译器不会在返回类型为try?
的抛出函数前面允许void
,但编译器不会抱怨。
那么在void函数前使用try?
是一种吸收错误的方法吗? (比如使用空的默认catch:catch {}
)
答案 0 :(得分:3)
编译器没有理由抱怨。返回类型 的
int(table)
是func throwingVoidFunction() throws { ... }
,因此是表达式的类型
Void
是try? throwingVoidFunction()
,如果在评估表达式时抛出错误,则其值为Optional<Void>
(nil
),
和== Optional<Void>.none
否则。
您可以忽略返回值或针对Optional<Void>.some()
对其进行测试。一个
示例在An elegant way to ignore any errors thrown by a method中给出:
nil