title: rethrows for class/struct instance method in swift error handling
body: <p>I am writing a struct that calls a method that can throw an error, however i dont want to handle the error here as i cant do anything at this point, i want to just bubble it up to the caller of me like you can do in java/c#.</p>
  
  <p>E.g writing a Json parser with a nested structure:</p>
  
  <pre><code>struct InnerParser {
  
      let dateFormatter: NSDateFormatter
  
      init( dateFormatter: NSDateFormatter) {
          self.dateFormatter = dateFormatter
      }
  
      func parse(json: JSON) throws -&gt; Inner  {
          let id = json["id"].string
  
          guard let actId = id, else {
              throw ParserError.UnexepectedResponse(json)
          }
  
          return Inner(id: actId)
      }
  
  }
  </code></pre>
  
  <p>This is fine but the problem is here:</p>
  
  <pre><code>struct MiddleParser {
  
      let innerParser: InnerParser
  
      init(innerParser: InnerParser) {
          self.innerParser = innerParser
      }
  
      func parse(json: JSON) throws -&gt; Middle {
          let id = json["id"].string
          var inners = [Inner]()
          for (_, innerJson) in json["Inner"] {
              do {
                  inners.append(try self.innerParser.parse(innerJson))
              } catch (let error) {
                  throw error
              }
  
          }
          guard let actId = id, where inners.count &gt; 0 else {
              throw ParserError.UnexepectedResponse(json)
          }
          return Middle(id: actId,inners:inners)
      }
  }
  </code></pre>
  
  <p>I have to do a 'do catch rethrow ' which seems clunky, is there a way to just do a try and rather than going into a catch it escapes the current function and raises an error on the callee?</p>