错误处理 - 错误传播

时间:2016-01-05 19:47:06

标签: ios swift error-handling

我有三个功能。 A - 调用 - > B - 调用 - > C.没有任何闭包参数的简单函数,比如读取plist的函数,验证......

说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,顾名思义,但它需要一个关闭抛出! 任何替代方案?

1 个答案:

答案 0 :(得分:4)

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

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

会将c()中抛出的错误传播给b()的来电者。