gpt4 book ai didi

ios - Swift Nested 尝试在闭包中

转载 作者:可可西里 更新时间:2023-11-01 00:38:43 28 4
gpt4 key购买 nike

我有以下需求

enum CustomError1: Error {
case errorA
}

enum CustomError2: Error {
case errorA
}

public func func1(completion: @escaping () -> Void) throws {
//some code
if #somecondition {
throw CustomError1.errorA
}
completion()
}

public func func2(completion: @escaping () -> Void) throws {
//some code
if #somecondition {
throw CustomError2.errorA
}
completion()
}


func result() {
do {
try func1() {
try self.func2 (){

}
}
} catch {

}
}

结果函数报错如下

Invalid conversion from throwing function of type '() throws -> ()' to non-throwing function type '() -> Void'

那是因为 func1 和 func2 给出了不同类型的错误。

因此,我需要在第一个闭包中编写另一个 do catch,如下所示

func result() {
do {
try func1() {
do {
try self.func2 (){

}
} catch {

}
}
} catch {

}
}

有没有办法简化这种嵌套的try catch

最佳答案

问题是 func1 的参数类型为 escaping () -> Void。这意味着您不能将其放入作为该参数传递的函数中。您需要将其键入为 escaping () throws -> Void

关于ios - Swift Nested 尝试在闭包中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53514248/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com