在Swift中转发错误

时间:2015-10-26 16:06:02

标签: swift error-handling try-catch forward throw

有没有更好的解决方案将Swift错误从一个函数转发到另一个函数?

目前,我这样做:

enum Error:ErrorType{

    case Error1
    case Error2
}

func func1()throws{
     do{
         try func2()

        }catch Error.Error1{
            throw Error.Error1

        }catch Error.Error2{
            throw Error.Error2
        }
}

func func2()throws{
     // proof something
     throw Error.Error1
}

因此,为了转发错误,我需要捕获所有错误并再次抛出它们。

有更好的解决方案吗?

2 个答案:

答案 0 :(得分:4)

是:不要将它包装在do ... catch块中。

func func2() throws{
     // proof something
     throw Error.Error1
}

func func1()throws{
     try func2()
}

答案 1 :(得分:1)

您不需要抓住它们,当您使用throws

标记您的功能时,它们会被自动抛出
func func1() throws {
    try func2()
}