我定义了一个错误类型“HelloError”,在多次调用之后,我不得不使用作为向下转换! 和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")
    }
}

谢谢。

最佳答案

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

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

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

09-06 20:21