Thank you for the help Alf.
does not (although in debug builds the error is reported).
Alf P. Steinbach wrote:
* 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