У меня есть требование следующим образом
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 {
}
}
Есть ли способ упростить этот вид вложенных попыток захвата