I came across a situation with some inherited code ... to be honest, I believe the code is written correctly, but this error seems to still be showing up.
I will quickly note that the code cross-compiles from Linux to LynxOS, I'm not sure if this might somehow be due to an error.
Basically, in one specific case:
try { std::vector<ClassA> x = SomeGeneratingFunction();
We throw, given that the vector is not populated, but for some reason the throw circumvents the catch clauses - both of them. It just seems to be happening here - although we usually do not do this by forming the scope of the if statement, but this should be completely irrelevant, since it is still in the scope of the try.
PS: the code below is actually the contents of the function, and exceptions are thrown from the function when called, although they should all be handled by catch blocks.
Any ideas how this is possible? And yes, these are not real code / exception classes, but the exception class is a simple example by which Google overloads std :: exception, and SomeGeneratingFunction () returns a good vector, even if it is empty. I cannot provide real code, but it is very close, with the exception of any typos that I might have written on the top of my head.
John Humphreys - w00te
source share