作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用基于 API 响应初始化的 Swift 模型 Cardholder
,我试图弄清楚如果响应中的某些字段为 null< 会发生什么
。这是 Cardholder
模型的(简化的)扩展
,带有来自 Decoder
的初始化程序:
extension Cardholder: DictionaryDeserializable, DictionarySerializable {
private enum CodingKeys: String, CodingKey {
case id = "id"
case firstName = "first_name"
case lastName = "last_name"
case dateOfBirth = "date_of_birth"
}
public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
id = try container.decode(String.self, forKey: .id)
firstName = try container.decode(String.self, forKey: .firstName)
lastName = try container.decode(String.self, forKey: .lastName)
dateOfBirth = try container.decode(Date.self, forKey: .dateOfBirth)
}
}
对于我手动测试的 API 响应,first_name
字段是 null
,我发现调试器直接走到最后firstName =
行之后的 init
方法:
如果我按下“Step Over”或“Step In”按钮,就会发生这种情况。
据我了解rom https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html ,这个 init
方法是一个抛出函数,它将抛出的错误传播到调用它的范围。我如何到达那个范围来弄清楚这个错误的最终后果是什么?
最佳答案
在 Swift 中抛出错误也不异常(exception)。这只是一种奇特的返回。您可以像返回时一样加强调用堆栈。走出去;它是进入右侧的按钮。
关于swift - 在 Swift 调试器中,如何查看异常被捕获的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54873242/
我是一名优秀的程序员,十分优秀!