Swift绑定绑定枚举案例

时间:2020-07-29 12:27:55

标签: swift exception enums pattern-matching

如果我有自定义错误

enum MyError: Error {
  case error1
  case error2
}

我可以捕获该类型的所有错误并绑定变量:

do {
} catch let e as MyError {
} catch {
  // everything else
}

或者我可以在不绑定变量的情况下捕获特定错误

do {
} catch MyError.error1 {
} catch {
  // everything else, including MyError.error2
}

但是如何捕获特定错误 并绑定变量?

2 个答案:

答案 0 :(得分:3)

如果我对您的理解正确,那么您希望捕获中的变量成为特定类型错误的特定错误情况。

如果是这样,您可以这样做:

do {
    try something()
} catch let err1 as MyError where err1 == .error1 {
    print(err1)
} catch {
    print(error)
}

答案 1 :(得分:0)

我认为您需要的是以下内容:

    do {
        throw(MyError.error2)
    } catch let error as MyError {
        switch error {
        case .error1:
            print("error 1 happened")
            return
        case .error2:
            print("error 2 happened")
            return
        }
    } catch let error {
        print(error)
        return
    }