可选尝试没有返回值的函数

时间:2017-01-19 20:27:52

标签: swift error-handling

当使用try?(可选的try)来调用没有返回值的throw函数时,错误会被忽略吗?

func throwingVoidFunction() throws { . . . }

try? throwingVoidFunction()

我预计编译器不会在返回类型为try?的抛出函数前面允许void,但编译器不会抱怨。

那么在void函数前使用try?是一种吸收错误的方法吗? (比如使用空的默认catch:catch {}

1 个答案:

答案 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