FYI-type stuff.
I've been at this issue for the past couple hours. Here's what I've
found so far.
My basic test case looks like this:
#include <exceptions>
#include <stdexcept>
int main () {
try {
// throw statement (see below)
} catch (std::exception&) {
} catch (...) {
}
return 0;
}
The following "throw statements" all throw exceptions that are not
getting caught by the compiler's runtime libraries:
a. _RW::__rw_throw (_RWSTD_ERROR_OUT_OF_RANGE, _RWSTD_FUNC
("main()"), 1, 0);
b. _RW::__rw_throw_proc (_RWSTD_ERROR_OUT_OF_RANGE, "what");
No clue yet why they are not caught.
The following "throw statement" however is caught properly:
c. char* what = "what"; throw (_STD::out_of_rang&)_STD::out_of_range
()._C_assign (what, 0);
Both of the first throw statements ultimately call the last throw
statement so my current guess is that the problem has something to do
with the internal what buffer.
Brad.