在swift中捕获错误时应打印什么?
印刷品: 类型不匹配(Swift.Array,Swift.DecodingError.Context)(编码路径:在swift中捕获错误时应打印什么?,swift,Swift,印刷品: 类型不匹配(Swift.Array,Swift.DecodingError.Context)(编码路径: [[u JSONKey(stringValue:“索引0”,intValue:0)],调试说明: “应解码数组,但找到了字典。”, UnderlineError:nil)) XXXXXXXXXXXXX 无法读取数据,因为它的格式不正确 至于我的信息 debugDescription:“应解码数组,但找到字典 相反。” 比错误中的文本有用得多。localizedDescription
[[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感谢您的帮助(没有双关语),我将立即更新我的答案