Forwarding an error in Swift

佐手、 提交于 2019-12-17 21:25:32

问题


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()
}


来源:https://stackoverflow.com/questions/33350360/forwarding-an-error-in-swift

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!