swift 2 : Try/Catch a non-throwing function

标签 swift try-catch swift2

我正在重构一个 Obj-c 类,其中在 removeObserver: 周围有一个 @try/@catch block 。

在 swift 中做同样的事情会触发警告,因为 removeObserver 可能会失败(当没有观察者时)但它不会抛出任何错误。

知道如何实现相同的行为吗?

编辑:我的代码:

try {  
    self.removeObserver(self, forKeyPath: "LineDisplayChanged")
}

最佳答案

您调用的 func removeObserver(_ anObserver: NSObject,forKeyPath keyPath: String) 来自 NSKeyValueObserving 协议(protocol),不会抛出任何异常。

另外,请注意在 Swift 2 中异常的语法(实际上是 ErrorType 枚举子类)已经改变,现在是这样的:

do{
   try functionThrowingExceptions()

}catch ErrorTypeSubclassEnum.Value {
   // Do something
}catch ErrorType {
   // Do something, catches everything else
}

参见 this post了解更多信息。

注意:我在 XCode7 的最新测试版中使用 KVO,执行 self.removeObserver(self, forKeyPath: "path") 不会触发任何错误/警告。

关于 swift 2 : Try/Catch a non-throwing function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32235549/

相关文章:

java - 程序在 Thread.sleep() 期间和计时器卡住

c++ - 在运行时调用处理 constexpr。 C++

java - 黑莓中异步列表字段实现时出现 IllegalThreadStateException

swift - 如何连接 JSON 对象 Swift?

arrays - 如何在 Swift 中扩展类型化数组?

ios - Apple Music 歌曲播放无法正常工作

ios - 在 NSURLSessionData 的实现中未调用委托(delegate)方法

ios - NSAllowsArbitraryLoads 不工作

ios - 从 Swift 访问 extern const struct

ios - SwiftUI 中的自定义模式转换