本机方法的错误处理 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 */ }
新手 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 */ }