title: Why aren't exceptions in C++ checked by the compiler?
body: <p>C++ provides a syntax for checked exceptions, for example:</p>
  
  <pre><code>void G() throw(Exception);
  void f() throw();
  </code></pre>
  
  <p>However, the Visual C++ compiler doesn't check them; the throw flag is simply ignored. In my opinion, this renders the exception feature unusable. So my question is: <b><em>is there a way to make the compiler check whether exceptions are correctly caught/rethrown?</em></b> For example a Visual C++ plugin or a different C++ compiler.   </p>
  
  <p>PS. I want the compiler to check whether exceptions are correctly caught, otherwise you end up in a situation where you have to put a catch around every single function call you make, <em>even if they explicitly state they won't throw anything</em>.</p>
  
  <p><b>Update:</b> the Visual C++ compiler does show a warning when throwing in a function marked with throw(). This is great, but regrettably, the warning doesn't show up when you call a subroutine that might throw. For example:</p>
  
  <pre><code>void f() throw(int) { throw int(13); }
  void h() throw() { g(); } //no warning here!
  </code></pre>