在swift中捕获错误时应打印什么?

在swift中捕获错误时应打印什么?,swift,Swift,印刷品: 类型不匹配(Swift.Array,Swift.DecodingError.Context)(编码路径: [[u JSONKey(stringValue:“索引0”,intValue:0)],调试说明: “应解码数组,但找到了字典。”, UnderlineError:nil)) XXXXXXXXXXXXX 无法读取数据,因为它的格式不正确 至于我的信息 debugDescription:“应解码数组,但找到字典 相反。” 比错误中的文本有用得多。localizedDescription

印刷品:

类型不匹配(Swift.Array,Swift.DecodingError.Context)(编码路径:
[[u JSONKey(stringValue:“索引0”,intValue:0)],调试说明:
“应解码数组,但找到了字典。”,
UnderlineError:nil))
XXXXXXXXXXXXX
无法读取数据,因为它的格式不正确

至于我的信息

debugDescription:“应解码数组,但找到字典 相反。”

错误中的文本有用得多。localizedDescription

那么为什么我不能这样做:
打印(错误.调试说明)


它不编译。

调试说明在协议CustomDebugStringConverable中定义。因此,您必须首先抛出错误:

catch let error {
    print(error)
    print("xxxxxxxxxxxxxxx")
    print(error.localizedDescription)
}

至于打印什么。日志记录的信息量最大的版本是简单地打印(错误)

debugDescription在协议CustomDebugStringConverable中定义。因此,您必须首先抛出错误:

catch let error {
    print(error)
    print("xxxxxxxxxxxxxxx")
    print(error.localizedDescription)
}

至于打印什么。日志记录的信息量最大的版本是简单地打印(错误)

您可以给出错误描述

if let customDebugStringConvertible = error as? CustomDebugStingConvertible {
    print(customerDebugStringConvertible.debugDescription)
}

你可以给你的错误描述

if let customDebugStringConvertible = error as? CustomDebugStingConvertible {
    print(customerDebugStringConvertible.debugDescription)
}

为什么您认为应该打印任何内容?您可以
打印((错误为NSError.debugDescription)
。但是为什么不直接使用
print(error)
debugPrint(error)
?您可以使用
catch DecodingError.typeMismatch(…)
等来处理它们:
}catch DecodingError.dataCorrupted(let context){print(context)}catch DecodingError.typemissage(let type,let context){print(type)}catch{print(“Default:\(error)”)}
为什么你认为你应该打印任何东西?你可以
打印((error as NSError).debugDescription)
。但是你为什么不
打印(error)
或者
调试打印(error)
?你可以使用
捕获解码错误。类型不匹配(…)
等来处理它们:
catch-DecodingError.dataCorrupted(let-context){print(context)}catch-DecodingError.typesmatch(let-type,let-context){print(type);print(context)}catch{print(“Default:\(error)”)}
这要求调用方知道(并强制转换为)实际的错误类型。关于替代解决方案,请参见@MartinR感谢您的捕获(没有双关语),我将立即更新我的答案。这要求调用者知道(并转换为)实际的错误类型。如需其他解决方案,请参阅@MartinR感谢您的帮助(没有双关语),我将立即更新我的答案