Printing error.localizedDescription
is misleading because it displays only a quite meaningless generic error message.
So never use localizedDescription
in Decodable
catch blocks.
In the simple form just
print(error)
It shows the full error including the crucial information debugDescription
and context
.Decodable
errors are very comprehensive.
While developing code you could catch each Decodable
error separately for example
} catch let DecodingError.dataCorrupted(context) {
print(context)
} catch let DecodingError.keyNotFound(key, context) {
print("Key '(key)' not found:", context.debugDescription)
print("codingPath:", context.codingPath)
} catch let DecodingError.valueNotFound(value, context) {
print("Value '(value)' not found:", context.debugDescription)
print("codingPath:", context.codingPath)
} catch let DecodingError.typeMismatch(type, context) {
print("Type '(type)' mismatch:", context.debugDescription)
print("codingPath:", context.codingPath)
} catch {
print("error: ", error)
}
It shows only the most significant information.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…