本机方法的错误处理 swift

Error handling on native methods swift

新手 swift 我不明白如何处理错误。 我已经理解,使用 guard、throw、do 和 try 来实现我自己的方法。

但是我如何处理来自苹果本机方法的错误,例如:

self.displayContent?.addAttribute(NSFontAttributeName, value: UIFont.fontMainFeedContentFont(), range: NSRange.init(location: 0, length: self.displayContent!.length))

因为这可能会崩溃,假设范围不好,我知道它会崩溃但是当我用 do try catch 围绕这段代码时 Xcode 告诉我在 'try'表达式。 我的理解是 addAttribute 不处理抛出错误。

我的问题是如何处理此方法的崩溃?

谢谢

此方法不会抛出错误,因此您无法捕获错误。似乎确保函数调用不会失败的唯一方法是手动检查范围是否有效。

例如,您可以使用 rangeOfString(:)

从字符串本身获取范围
(attributedString.string as NSString).rangeOfString("foo")

或者简单地根据字符串验证您的 NSRange 边界。

if (range.location != NSNotFound && range.location + range.length <= attributedString.length) { /* ok */ }