title: What's the need for special exception classes?
body: <p>Why did the C++ standard bother inventing the <code>std::exception</code> classes? What's their benefit? My reason for asking is this:</p>
  
  <pre><code>try
  {
    throw std::string("boom");
  }
  catch (std::string str)
  {
    std::cout &lt;&lt; str &lt;&lt; std::endl;
  }
  </code></pre>
  
  <p>Works fine. Later, if I need, I can just make my own lightweight "exception" types. So why should I bother with <code>std::exception</code>?</p>