Swift 6 - 如何在任务中使用类型化抛出

问题描述 投票:0回答:1

我正在尝试使用异步函数的类型抛出,但编译器似乎无法推断类型。我收到错误类型“_ErrorCodeProtocol”没有成员“one”

如果我执行相同的代码而不是异步,它就可以工作。我做错了什么?

enum MyError: Error {
    case one
}

struct MyTest {

    func test() async throws(MyError) {}
    
    func anotherTest() {
        Task {
            do {
                try await test()
            } catch {
                switch error {
                case .one:
                    print("one")
                }
            }
        }
    }
}
swift swift6
1个回答
0
投票

看起来您在这种情况下明确需要转换错误

Task {
    do {
        try await test()
    } catch let error as MyError {
        switch error {
        case .one:
            print("one")
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.