我有三个功能。 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,顾名思义,但它需要一个关闭抛出! 任何替代方案?
答案 0 :(得分:4)
b()
必须标有throws
,并且需要致电try c(1)
。
但是你不需要一个do-catch-block。所以
func b(param: Int) throws {
// do something ...
try c(1)
// do more ...
}
会将c()
中抛出的错误传播给b()
的来电者。