swift - 在没有向下转换错误的情况下处理 Swift 4.2 中的错误

标签 swift error-handling

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

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 block 执行 switch

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

更多详细信息请参阅 Swift Language Guide: Error handling

关于swift - 在没有向下转换错误的情况下处理 Swift 4.2 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51492333/

相关文章:

ios - Swift 动态变量不能是可打印类型

objective-c - 通过 Flurry Analytics 追踪崩溃

r - match.names(clabs, nmi) 中的错误 - 线性规划模型 - R

c# - C#中的错误消息

c++ - 数组越界或错误等于 nullptr? C++

python - 我无法在原子文本编辑器中安装autocomplete-python软件包

ios - 如何仅当其他异步方法在 Swift 中完成工作时才异步调用方法?

swift - Swift 中的选项和字典

ios - 无法将 UIViewController 类型的值转换为 PatternDetailViewController

ios - 如何在 Swift 中访问类的实例