error handling – 错误传播

我有三个function。 A –calling – > B –calling – > C.没有任何闭包参数的简单函数,比如读取plist的函数,validation……

假设在C中出现错误。我在这里使用Do / Try / Catch来跨函数传递错误。

static func a(param: int) { do { try b() } catch { } } static func b(param: int) { //specific tasks in func b c(1) //CAN I PASS THE ERROR TO FUNC a() without do/try/catch block? } static func c(param : int) throws { //Error created and throw'ed } 

我尝试使用rethrow,顾名思义,但它需要一个关闭抛出! 任何替代品?

b()必须用throws标记,并且需要调用try c(1) 。 但是你不需要一个do-catch-block。 所以

 func b(param: Int) throws { // do something ... try c(1) // do more ... } 

c()抛出的错误传播给b()的调用者。