IOS:调用可以抛出,但没有标记'try'并且错误未处理[重复]

Posted

技术标签:

【中文标题】IOS:调用可以抛出,但没有标记\'try\'并且错误未处理[重复]【英文标题】:IOS: Call can throw, but is not marked with 'try' and the error is not handled [duplicate]IOS:调用可以抛出,但没有标记'try'并且错误未处理[重复] 【发布时间】:2017-07-11 02:08:10 【问题描述】:

在谷歌搜索该主题并阅读其他人对其他主题的答案并将他们的建议实施到我的之后,我仍然无法弄清楚。

在我的代码中:

import Foundation

protocol WeatherServiceDelegate 
     func setWeather(weather: Weather) 


class WeatherService 
     var delegate: WeatherServiceDelegate?

     func getWeather(city: String) 
         let path = "http://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b1b15e88fa797225412429c1c50c122a1"
         let url = URL(string: path)!
         let session = URLSession.shared
         let task = session.dataTask(with: url)  (data: Data?, response: URLResponse?, error: Error?) -> Void in
             if let data = data 
                 //print(">>>>\(data)")

                 let json = JSON(data: data)
             
         

         task.resume()
        

我从这一行得到错误。 JSON 中的“J”正下方的红色小箭头...

let json = JSON(data: data)

错误是:

调用可以抛出,但没有标记'try'并且错误没有被处理

【问题讨论】:

您需要将数据括号内的所有内容放在 do catch 块内,并将 let json = JSON(data: data) 更改为 let json = try JSON(data: data) 阅读摇摆语言指南。说真的。 【参考方案1】:

你想做的是以下。

var json: [AnyHashable:Any]?

do 
    json = try JSON(data: data)
 catch _ 
    json = nil

xcode 想说的是,调用 JSON(data: data) 会引发错误,你应该把它放在 try-catch

【讨论】:

不幸的是我得到了更多的错误...... 它在说什么? @HarrySingh 如果你要去catch,那么使用try? 是没有意义的。要么使用try,要么删除catch 是的,我的坏@Alexander @HarrySingh 整个东西都可以用let son = try? JSON(data: data)代替

以上是关于IOS:调用可以抛出,但没有标记'try'并且错误未处理[重复]的主要内容,如果未能解决你的问题,请参考以下文章

调用可以抛出,但它没有标记为'try'并且没有处理错误:NSRegularExpression

“调用可以抛出,但它没有用'try'标记并且错误没有处理“[重复]

Swift 2:调用可以抛出,但它没有用'try'标记并且错误没有被处理

快捷键2:可以抛出呼叫,但未将其标记为“ try”,并且未处理错误

Swift 错误未处理且未标有 try

Swift 2.2 HealthKit - 调用可以抛出,但它没有标有“尝试”并且错误未处理