确定 Swift 中创建对称密钥异常的原因

Identifying cause of exception creating symmetric key in Swift

我是 Swift/XCode 的新手(我没有 Obj-C 经验)所以我正在完成 "toy" 练习,但我无法找出调试问题。也就是说,我为所有异常启用了断点,现在我遇到了一个 "light" 异常(它不会终止执行),我不知道如何诊断。

由于未显示异常类型(而且我无法使用 this Objective C 技术来获取信息),我不确定如何识别正在发生的异常。

有问题的代码:

var error: Unmanaged<CFErrorRef>? = nil
let parameters: [String:AnyObject] = [kSecAttrKeyType: kSecAttrKeyTypeAES]
let rawcryptokey: [UInt8] = [63, 17, 27, 99, 185, 231, 1, 191,
    217, 74, 141, 16, 12, 99, 253, 41] // (sample)
let cfdatacryptokey: CFDataRef = CFDataCreate(kCFAllocatorDefault, rawcryptokey, rawcryptokey.count)
let cryptokey: SecKeyRef = SecKeyCreateFromData(parameters as CFDictionaryRef,
    cfdatacryptokey, &error).takeRetainedValue()

我得到 Thread1: breakpoint 1.2 但我可以继续执行直到 "downstream" 崩溃,但我没有确定抛出什么异常的方法,更不用说为什么了。虽然用代码解决问题是我的当务之急,但任何人都可以建议一种方法或指南来处理 Swift/CF 代码中的异常吗?

非常感谢!

C++ 和 Objective-C 在使用和处理异常方面存在根本差异。

在 Objective-C 中,它们旨在成为指示未决完全失败的致命事件。

在 C++ 中,它们通常用于代替返回可能未检查的错误值(java 和 C# 类似地使用它们)因此失败的网络调用可能会抛出异常而不是返回错误值。

即使在 "normal" C++ 异常上打开所有异常也会生成断点,这些异常是预期的并且以惊人的规律发生。

我的建议是使用 "All Objective-C Exceptions"、"objc_exception_throw" 和“-[NSException raise]”