【问题标题】: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))")
    }
    

    【讨论】:

    • 感谢您的详细解答!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 2011-02-12
    • 1970-01-01
    相关资源
    最近更新 更多