JSONEncoder
方法func encode<T>(_ value: T) throws -> Data where T : Encodable
是可抛出的。
我想知道为什么它是可抛出的:如果要编码的值不符合Encodable
,它不应该通过编译器,所以它在运行时应该不会发生错误。
来自JSONEncoder
的源代码:
/// - throws: `EncodingError.invalidValue` if a non-conforming floating-point value is encountered during encoding, and the encoding strategy is `.throw`.
/// - throws: An error if any value throws an error during encoding.
所有错误的调试说明:
顶级(T.self)没有编码任何值。
顶级 (T.self) 编码为空 JSON 片段。
编码为数字 JSON 片段的顶级 (T.self)。
顶级 (T.self) 编码为字符串 JSON 片段。