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()
的调用者。