在Swift调试器中,如何查看捕获异常的位置?

时间:2019-02-25 19:19:33

标签: swift debugging error-handling

我正在使用基于API响应进行初始化的Swift模型Cardholder,并且我试图弄清楚如果响应中的某些字段为null会发生什么。这是extension模型的(简化)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,而我发现的是调试器直接移至{{1} } init行之后的方法:

Xcode debugger with current line of execution at end of init

如果我按下“跳过”或“进入”按钮,就会发生这种情况。

据我对https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html的了解,此firstName =方法是一种throwing函数,它将在其中引发的错误传播到调用它的作用域。我将如何进入该范围以找出此错误的最终后果?

1 个答案:

答案 0 :(得分:3)

在Swift中抛出错误也不例外。这只是一种幻想。您可以像返回一样增加调用堆栈。跨步;这是单步执行功能右侧的按钮。