title: Catch statements are being completely ignored
body: <p>I've run into a situation with some code I inherited... honestly, I believe the code is written correctly, but this error still seems to manifest.</p>
  
  <p>I'll quickly note that the code is cross-compiled from linux to LynxOS, I'm not sure if that can have anything to do with the error.</p>
  
  <p>Basically, in one specific case:</p>
  
  <pre><code>try {
      std::vector&lt;ClassA&gt; x = SomeGeneratingFunction();
  
      //We get to here fine.  X may be empty/unpopulated though.
      if (x.size() &lt; 1)
      {
          throw(MyException("It crashed."));
      }
  }
  catch (MyException e)
  {
      //Handle it.
  }
  catch (...)
  {
      //Handle it.
  }
  </code></pre>
  
  <p>We throw given the vector is unpopulated, but for some reason the throw bypasses the catch clauses - both of them.  It only seems to happen here - though we woudln't usually do it form an if statement scope, but that should be completely irrelevant since its still in the try scope.</p>
  
  <p>PS:  The code below is actually the contents of a function, and exceptions come out of the function when called even though they should all be handled by the catch blocks.</p>
  
  <p>Any ideas how this is possible?  And yes, this isn't the real code/exception classes, but the exception class is the simple example you'd google of overloading std::exception, and the SomeGeneratingFunction() does return a good vector, even if it is empty.  I cannot provide the real code, but this is exceedingly close barring any little typos I may have made writitng it off the top of my head.</p>