【发布时间】:2016-12-01 18:10:34
【问题描述】:
新来的 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 不处理抛出错误。
我的问题是如何处理这种方法的崩溃?
谢谢
【问题讨论】:
-
你没有!崩溃与
throw的异常完全不同。您不能也不能捕获的崩溃 - 崩溃始终表明您作为开发人员引入的错误。例如,确保范围正确是您的工作。 -
是的,哈哈,当然,第一,我不是有史以来最好的开发者,第二,我不对数据负责,我不信任他们第三,我想了解。在 Objc 中我可以使用 try catch,在 swift 中不可能吗?
-
在这方面objc和swift没有区别。如果你弄乱了范围,两者都会而且应该崩溃。唯一的区别是 swift 编译器会告诉你没有异常,在 objc 中你写了一个 try-catch ,它根本不会有任何效果。
-
大声笑,谢谢你,我现在明白了,但是在 Objc 中我可以发现错误:)