title: What does a "do statement" without catch block mean?
body: <p>While reading <em>Programming iOS 12</em>, I came across several example codes with <strong><em>do statements</em></strong>, without <strong><em>catch blocks</em></strong>, like the following: </p>
  
  <pre><code>    do {
          let mars = UIImage(named:"Mars")!
          let sz = mars.size
  
          let r = UIGraphicsImageRenderer(size:CGSize(sz.width*2, sz.height), format:mars.imageRendererFormat)
          self.iv1.image = r.image { _ in
              mars.draw(at:CGPoint(0,0))
              mars.draw(at:CGPoint(sz.width,0))
          }
      }
  
      // ======
  
      do {
          let mars = UIImage(named:"Mars")!
          let sz = mars.size
  
          let r = UIGraphicsImageRenderer(size:CGSize(sz.width*2, sz.height*2), format:mars.imageRendererFormat)
          self.iv2.image = r.image { _ in
              mars.draw(in:CGRect(0,0,sz.width*2,sz.height*2))
              mars.draw(in:CGRect(sz.width/2.0, sz.height/2.0, sz.width, sz.height), blendMode: .multiply, alpha: 1.0)
          }
      }
  </code></pre>
  
  <p>I'd greatly appreciate it if someone could explain what the purpose of <strong><em>do statements without catch blocks</em></strong> is.</p>