Re: VC++2008 and vector exception - not caught
* Frank S:
With some test code similar to that below, I can't seem to catch the
exception that is thrown on the v1[44]... line.
You're not guaranteed that there will be an exception, just Undefined Behavior
(which might do anything or nothing).
What should I check to solve this problem? (I am using a mixture of MFC
and STL.)
As I recall there is, as you imply, a Visual C++ option to get automatic
checking also for operator[] -- if so then it's presumably documented.
However, why don't you instead make that explicit in the code, and write
v.at(44) = 22;
Then, for a standard-conforming compiler, you get a std::something exception
derived from std::exception.
vector<int> v1;
try
{
v1[44] = 22;
}
catch(std::exception e)
For efficiency, safety, and not the least not making other programmers waste
time on figuring out "why did he do /that/", consider catching in the idiomatic
way, by reference to const:
catch( std::exception const& e )
{
e.what();
e.what();
}
Cheers, & hth.,
- Alf
--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?