在Swift中使用JSONDecoder进行错误处理
我JSONDecoder()
在Swift中使用,需要获取更好的错误消息。
在调试描述中(例如),我可以看到诸如“给定数据不是有效的JSON”之类的消息,但是我需要知道的是,而不是网络错误(例如)。
let decoder = JSONDecoder() if let data = data{
do {
// process data
} catch let error {
// can access error.localizedDescription but seemingly nothing else
}
我尝试将其强制转换为DecodingError
,但这似乎并未显示更多信息。我当然不需要字符串-甚至错误代码也比这有用得多…
回答:
error.localizedDescription
在解码catch
块中打印。这将返回一个毫无意义的通用错误消息。始终打印error
实例。然后,您会得到所需的信息。
let decoder = JSONDecoder() if let data = data {
do {
// process data
} catch {
print(error)
}
或针对 错误使用
let decoder = JSONDecoder()if let data = data {
do {
// process data
} 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)
}
以上是 在Swift中使用JSONDecoder进行错误处理 的全部内容, 来源链接: utcz.com/qa/426521.html