我试着这样做,试着,抓住:

do {
   setQA = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! [AnyObject]
   print(setQA)
}
catch _ {
    setQA = nil
    self.customAlert("Error")
}

我正试图调用一个方法来使用UIAlertController,但它永远也达不到。
这甚至无法通过尝试,我的应用程序将崩溃,并出现以下错误:
Could not cast value of type '__NSCFDictionary' (0x1a1773968) to 'NSArray'

这是一个预期的错误,有时会发生挂起的用户数据,我只是没有我的应用崩溃,只是显示警告

最佳答案

do/try/catch将捕获某些其他方法引发的错误,但它不会捕获运行时异常,例如您从强制向下转换中获取的异常。例如,如果data是无效的JSON,则会抛出并捕获错误。在您的例子中,JSON似乎是有效的,但它是一个字典,而不是一个数组。
你想要像这样的东西

setQA = nil
do {
    if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as? [AnyObject] {
        setQA = json
        print(setQA)
    } else {
        self.customAlert("Invalid response from server")
    }
} catch _ {
    self.customAlert("Error parsing JSON")
}

10-08 06:07