Forwarding an error in Swift

2019-01-20 19:38发布

问题:

Is there a better solution to forward a Swift error from one function to another?

In the moment, I'm doing it like this:

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
}

So, to forward an error, I need to catch all the errors and throw them again.

Is there a better solution?

回答1:

Yes: don't wrap it in a do ... catch block.

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

func func1()throws{
     try func2()
}


回答2:

You don't need to catch them they will be thrown automatically as you marked your function with throws

func func1() throws {
    try func2()
}