當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Swift Result.Publisher assertNoFailure(_:file:line:)用法及代碼示例


實例方法

assertNoFailure(_:file:line:)

當上遊發布者失敗時引發致命錯誤,否則重新發布所有接收到的輸入。

聲明

func assertNoFailure(
    _ prefix: String = "",
    file: StaticString = #file,
    line: UInt = #line
) -> Publishers.AssertNoFailure<Self>

返回值

當上遊發布者失敗時引發致命錯誤的發布者。

參數

prefix

在致命錯誤消息的開頭使用的字符串。

file

錯誤消息中使用的文件名。這默認為 #file

line

錯誤消息中使用的行號。這默認為 #line

詳述

使用assertNoFailure() 進行測試期間處於活動狀態的內部完整性檢查。但是,重要的是要注意,與 Swift 對應的 fatalError(_:) 一樣,assertNoFailure() 運算符在開發和測試期間觸發時會斷言致命異常,and 在發布的代碼版本中。

在下麵的示例中,CurrentValueSubject 成功發布了初始值和第二個值。第三個值,包含 genericSubjectError ,導致 assertNoFailure() 運算符斷言一個致命異常停止進程:


public enum SubjectError: Error {
    case genericSubjectError
}


let subject = CurrentValueSubject<String, Error>("initial value")
subject
    .assertNoFailure()
    .sink(receiveCompletion: { print ("completion: \($0)") },
          receiveValue: { print ("value: \($0).") }
    )


subject.send("second value")
subject.send(completion: Subscribers.Completion<Error>.failure(SubjectError.genericSubjectError))


// Prints:
//  value: initial value.
//  value: second value.
//  The process then terminates in the debugger as the assertNoFailure operator catches the genericSubjectError.

可用版本

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

相關用法


注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 Result.Publisher assertNoFailure(_:file:line:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。