title: Return false vs raising an exception in Ruby- When and why?
body: <p>I am really confused on the concepts of:</p>
  
  <ul>
  <li>Don't use exceptions as control flow</li>
  <li>Don't return nil/false as an exception</li>
  </ul>
  
  <p>Say I have the following instance method:</p>
  
  <pre><code>class Logo
    # This method has some logic to create an image using Rmagick
    def process
      begin
        @logo_image = RmagickHelper.new(self.src)
      rescue Magick::ImageMagickError
        raise Exceptions::LogoUnprocessable, "ImageMagick can't process the URL"
      end
    end
  end
  </code></pre>
  
  <p>So in a more general method I have the following:</p>
  
  <pre><code>def build_all_images
      begin
        @logo.process
      rescue Exceptions::LogoUnprocessable
        @logo.status = 'unprocessable'
        return false #This terminates the method so no more stuff is processed, because logo could not be processed.
      end
  #....
  end
  </code></pre>
  
  <p>My question is:</p>
  
  <p>Is this correct to do:</p>
  
  <pre><code>raise Exceptions::LogoUnprocessable, "ImageMagick can't process the URL"
  </code></pre>
  
  <p>Or should I have just done</p>
  
  <pre><code>return false
  </code></pre>