从捕获的错误中获取错误描述

时间:2018-03-26 03:27:35

标签: swift error-handling try-catch

我这样做:

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中捕获任何类型的错误并访问其调试描述?

1 个答案:

答案 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))")
}