Forwarding an error in Swift

2019-01-20 19:10发布

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?

2条回答
混吃等死
2楼-- · 2019-01-20 19:42

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

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

func func1()throws{
     try func2()
}
查看更多
唯我独甜
3楼-- · 2019-01-20 19:44

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

func func1() throws {
    try func2()
}
查看更多
登录 后发表回答