【问题标题】:Errors thrown from here are not handled不处理从这里抛出的错误
【发布时间】:2017-03-21 02:09:07
【问题描述】:

我在尝试在我的 iOS 应用上解析 JSON 时遇到了这个问题:

相关代码:

let jsonData:NSDictionary = try JSONSerialization.jsonObject(with: urlData! as Data, options: JSONSerialization.ReadingOptions.mutableContainers ) as! NSDictionary

/* XCode error ^^^ Errors thrown from here are not handled */

有人可以帮我吗?

【问题讨论】:

  • 请不要将您的代码作为图片发布。将相关代码复制并粘贴到您的问题中。还要在您的问题中以文本形式包含完整的错误消息,并指出导致错误的行。
  • 如果您使用的是 Swift 3,请使用 Swift 3 类型。使用Data,而不是NSData。使用Error,而不是NSError。使用 Swift 数组和字典,而不是 NSArrayNSDictionary
  • 按照错误信息告诉你的去做。您正在使用try,但它不在适当的 Do-Catch 范围内...
  • 尝试使用try?并将代码添加到您的问题中
  • ...并且同步加载数据。

标签: ios json swift swift3


【解决方案1】:

未处理let jsonData = try JSONSerialization ... 中可能引发的错误。

您可以忽略可能的错误,如果发生错误,则崩溃作为惩罚:

let jsonData = try! JSONSerialization ...

或者返回一个Optional,所以jsonData在错误情况下是nil

let jsonData = try? JSONSerialization ...

或者你可以捕获并处理抛出的错误:

do {
    let jsonData = try JSONSerialization ...
    //all fine with jsonData here
} catch {
    //handle error
    print(error)
}

你可能想学习The Swift Language

【讨论】:

  • 你应该投赞成票!我是斯威夫特的新手!哦,伙计,斯威夫特一开始就让人头疼!
  • 另一种可能性:在抛出函数 f 中,您可以调用另一个抛出函数 g 而不使用“try”。如果 g 抛出错误,f 立即返回并抛出相同的错误。
猜你喜欢
  • 2015-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多