【问题标题】:Get error description from caught error从捕获的错误中获取错误描述
【发布时间】:2018-03-26 03:27:34
【问题描述】:
我会这样做:
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)")
}
我如何从这里访问错误描述?为什么我不能一次捕获任何类型的错误并访问其调试描述?
【问题讨论】:
标签:
swift
error-handling
try-catch
【解决方案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))")
}