我这样做:
let decoder = JSONDecoder()
do
{
let decodedData = try decoder.decode(type, from: data)
}
catch DecodingError.dataCorrupted
{
let descr = ???
Log.error("Failed to decode JSON response. Error was: \(descr)")
}
如何从中访问错误说明?为什么我不能简单地在一个catch中捕获任何类型的错误并访问其调试描述?
答案 0 :(得分:1)
在Swift中,许多错误符合协议LocalizedError
,它将为您提供可用于打印错误消息的变量localizedDescription: String?
。 DecodingError
不应该有任何不同。
你应该能够在一个捕获中捕获任何类型的错误。为此,您可以使用
catch let error as DecodingError {
// Any error of type DecodingError
}
或
catch {
// Any possible error
}
如果我理解正确,您要抓住DecodingError
类型的任何错误。在这种情况下,您可以简单地执行以下操作
let decoder = JSONDecoder()
do {
let decodedData = try decoder.decode(type, from: data)
} catch let error as? DecodingError {
Log.error("Failed to decode JSON response. Error was: \(String(describing: error.localizedDescription))")
}