在Swift 4.2中处理错误而不会出现向下转换错误

时间:2018-07-24 06:56:57

标签: swift error-handling

我定义了一个错误类型“ HelloError”,多次调用后,我必须使用 as!和do-catch块中的错误进行向下转换。

enum HelloError: Error {
    case A
    case B
}

func hello() throws {
    try helloAgain()
}

func helloAgain() throws {
    throw HelloError.A
}

do {
    try hello()
    } catch {
    switch error as! HelloError {
    case .A:
        print("A")
    case .B:
        print("B")
    }
}

是否有可能在不降低错误类型的情况下捕获错误?我想写这样的代码:

do {
    try hello()
} catch {
    switch error {
    case HelloError.A:
        print("A")
    case HelloError.B:
        print("B")
    }
}

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用多个catch块进行切换

do {
    try hello()
} catch HelloError.A {
     print("A")
} catch HelloError.B {
    print("B")
}

更多详细信息在Swift Language Guide: Error handling