gpt4 book ai didi

Swift:无法捕获具有关联数据的特定错误情况

转载 作者:行者123 更新时间:2023-11-28 13:51:28 25 4
gpt4 key购买 nike

我正在设置一个自定义 JSONDecoder.dateDecodingStrategy,如果日期格式不正确,它会抛出一个 DecodingError.dataCorruptedError:

decoder.dateDecodingStrategy = .custom { (decoder) -> Date in
let container = try decoder.singleValueContainer()
let dateString = try container.decode(String.self)
let date = /* do magic date manipulation here */

if let date = date {
return date
} else {
throw DecodingError.dataCorruptedError(in: container,
debugDescription: "foo")
}
}

但是,我似乎无法为这个特定的 DecodingError 类型编写一个 catch 子句。我试过了

} catch DecodingError.dataCorruptedError(let container, let debugDescription) {

} catch DecodingError.dataCorruptedError(_, _) {

两者都声明“参数标签'(_:, _:)'不匹配任何可用的重载。”

完全忽略相关数据,例如

} catch DecodingError.dataCorruptedError {

barfs with “‘_’类型的表达式模式无法匹配‘Error’类型的值。”

所以我尝试了一个不同的策略,即

} catch let error as DecodingError {
switch error {
case .dataCorruptedError(_, _):

但这也无法编译,声明 “Pattern cannot match values of type 'DecodingError'.”

当然我错过了一些非常简单的东西,但是什么?

最佳答案

DecodingError.dataCorruptedError(in:debugDescription:)DecodingError 的静态函数,该函数返回 .dataCorrupted 的情况。因此,您的 catch 语句应如下所示:

} catch DecodingError.dataCorrupted(let context) {

您应该能够从上下文中提取一些信息,如果您需要更多信息,那么您可能需要一种专用的错误类型。

关于Swift:无法捕获具有关联数据的特定错误情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54546829/

25 4 0
文章推荐: javascript - 检查 DIV 相对于浏览器屏幕的位置 - jQuery
文章推荐: javascript - 如何知道在两个相同的项目中单击了什么
文章推荐: css - 文本
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com