'catch' 块无法被执行

4

为什么编译器会显示警告:'catch' block is unreachable

这可能是因为观察者没有被设置,这会导致崩溃。

enter image description here

1个回答

6
黄色的警告提示您原因 - do块中没有抛出任何内容; 没有try语句,因为您调用的函数都没有throw。如果没有任何throw,则永远无法catch。
在Swift中,do / try / catch仅用于捕获Swift错误。它不用于捕获可能发生的通用运行时异常。
removeObserver是一种基础功能,早在Swift之前就存在了。如果未注册观察者,它将引发严重的运行时异常。它不会抛出Swift Error。

1
我认为Swift的do/catch更有用。 - János
1
通常情况下是这样的,但键值观察被深深地嵌入到NSObject中并使用方法替换。如果可能的话,我会避免使用它。在注销之前,您需要知道是否已经注册了观察者。您不能只是尝试并希望它能正常工作。 - Paulw11
1
在Swift中,do/try/catch只用于捕获Swift错误。它不用于捕获可能发生的通用运行时异常。但是,在Xcode 10.2.1和Swift 5中,它确实可以很好地捕获Objc运行时的通用异常。 - Anton Tropashko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接