5

JSONEncoder方法func encode<T>(_ value: T) throws -> Data where T : Encodable是可抛出的。

我想知道为什么它是可抛出的:如果要编码的值不符合Encodable,它不应该通过编译器,所以它在运行时应该不会发生错误。

4

1 回答 1

6

来自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 片段。

于 2017-08-14T01:59:10.697 回答