title: Fail vs. raise in Ruby : Should we really believe the style guide?
body: <p>Ruby offers two possibilities to cause an exception programmatically:  <code>raise</code> and <code>fail</code>, both being <code>Kernel</code> methods. According to the documents, they are absolutely equivalent. </p>
  
  <p>Out of a habit, I used only <code>raise</code> so far. Now I found several recommendations (for example <a href="https://www.relishapp.com/womply/ruby-style-guide/docs/exceptions">here</a>), to use <code>raise</code> for exceptions to be caught, and <code>fail</code> for serious errors which are not meant to be handled.</p>
  
  <p>But does it really make sense? When you are writing a class or module, and cause a problem deep inside, which you signal by <code>fail</code>, your programming colleagues who are reviewing the code, might happily understand your intentions, but the person who is <em>using</em> my code will most likely not look at my code and has no way of knowing, whether the exception was caused by a <code>raise</code> or by <code>fail</code>. Hence, my careful usage of <code>raise</code> or <code>fail</code> can't have any influence on his decision, whether she should or should not handle it.</p>
  
  <p>Could someone see flaws in my arguments? Or are there other criteria, which might me want to use <code>fail</code> instead of <code>raise</code>?</p>