当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift Result.Publisher catch(_:)用法及代码示例


实例方法

catch(_:)

通过将上游发布者替换为另一个发布者来处理来自上游发布者的错误。

声明

func `catch`<P>(_ handler: @escaping (Self.Failure) -> P) -> Publishers.Catch<Self, P> where P : Publisher, Self.Output == P.Output

返回值

通过用另一个发布者替换失败的发布者来处理来自上游发布者的错误的发布者。

参数

handler

接受上游失败作为输入并返回发布者以替换上游发布者的闭包。

详述

使用 catch() 将来自上游发布者的错误替换为新发布者。

在下面的示例中,catch() 运算符通过将错误替换为 Just 发布者来处理上游发布者抛出的 SimpleError。这通过发布单个值并正常完成来继续流。


struct SimpleError: Error {}
let numbers = [5, 4, 3, 2, 1, 0, 9, 8, 7, 6]
cancellable = numbers.publisher
    .tryLast(where: {
        guard $0 != 0 else {throw SimpleError()}
        return true
    })
    .catch({ (error) in
        Just(-1)
    })
    .sink { print("\($0)") }
    // Prints: -1

背压注意:这个发布者通过requestcancel到上游。收到错误后,发布者将任何未满足的需求发送到新的 Publisher 。另见:replaceError

可用版本

iOS 13.0+, iPadOS 13.0+, macOS 10.15+, Mac Catalyst 13.0+, tvOS 13.0+, watchOS 6.0+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 Result.Publisher catch(_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。