swiftyjson - Call can throw, but it is marked with 'try' and the error is not handled

前端 未结 3 425
情话喂你
情话喂你 2020-12-11 16:20

I am trying to use swiftyjson and I am getting an Error:

Call can throw, but it is marked with \'try\' and the error is not handled.

相关标签:
3条回答
  • 2020-12-11 16:26

    The SwiftyJSON initializer throws, the declaration is

    public init(data: Data, options opt: JSONSerialization.ReadingOptions = []) throws
    

    You have three options:

    1. Use a do - catch block and handle the error (the recommended one).

      do {
         let json = try JSON(data: data)
         print(json)
      } catch {
         print(error)
         // or display a dialog
      }
      
    2. Ignore the error and optional bind the result (useful if the error does not matter).

      if let json = try? JSON(data: data) {
         print(json)
      }
      
    3. Force unwrap the result

      let json = try! JSON(data: data)
      print(json)
      

      Use this option only if it's guaranteed that the attempt will never fail (not in this case!). Try! can be used for example in FileManager if a directory is one of the default directories the framework creates anyway.

    For more information please read Swift Language Guide - Error Handling

    0 讨论(0)
  • 2020-12-11 16:31

    You should wrap it into a do-catch block. In your case:

    do {
        let session =  URLSession.shared.dataTask(with: url) {
            (data, response, error) in
                guard let data = data else {
                print ("data was nil?")
                return
            }
    
            let json = JSON(data: data)
            print(json)
        }
    } catch let error as NSError {
        // error
    }
    
    0 讨论(0)
  • 2020-12-11 16:41

    Probably you need to implement do{} catch{} block. Inside do block you have to call throwable function with try.

    0 讨论(0)
提交回复
热议问题