【问题标题】:Try Block throwing an error尝试阻止抛出错误
【发布时间】:2015-10-18 20:59:34
【问题描述】:

我收到以下错误消息:

从这里抛出的错误不会被处理,因为封闭的 catch 是 不详尽

在下面的 try 语句中:

    if WCSession.isSupported() {
    let session = WCSession.defaultSession()
    if session.watchAppInstalled {
        let UserInfo = ["waste":floatWastedAmount]
        session.transferUserInfo(UserInfo)
        do {
            try session.updateApplicationContext(UserInfo)
        } catch let error as NSError {
            NSLog("Updating the context failed: " + error.localizedDescription)
        }
    }
}

我不知道为什么它说非详尽,因为任何错误都应该执行 NSLog 语句。任何指针都会有所帮助

【问题讨论】:

  • 您使用的是哪个 Xcode 版本?您的代码应该可以编译(在我的 Xcode 7.0.1 中也是如此),因为所有错误都可以转换为 NSError。
  • 版本 7.1 beta 3 (7B85) ...刚刚在 7.0.1 中尝试过,得到相同的错误.. 编译失败。

标签: ios swift watchkit


【解决方案1】:

更改为以下内容.. 一般捕获所有错误:

 if WCSession.isSupported() {
        if session.watchAppInstalled {
            let UserInfo = ["waste":floatWastedAmount]
            do {
                try session.updateApplicationContext(UserInfo)
            } catch {
                print("Updating the context failed")
            }
        }
    }

【讨论】:

    【解决方案2】:

    捕获的错误列表必须是详尽的,您必须处理所有可能的情况。就像 switch 语句一样,你可以使用一个空的 catch 作为中断。所以你的代码很好,只需添加空捕获

    do {
        try session.updateApplicationContext(UserInfo)
    } catch let error as NSError {
        NSLog("Updating the context failed: " + error.localizedDescription)
    } catch {}
    

    【讨论】:

      猜你喜欢
      • 2018-03-25
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-24
      • 2021-09-22
      • 2018-01-13
      • 2021-11-25
      相关资源
      最近更新 更多