我正在尝试使用operator[]
in std::map
来使用键读取元素。 但是,当我试图访问一个无效的密钥它是抛出一个异常,我无法赶上使用try
- catch
块。这里是我使用的代码:使用std :: map时无法捕获未处理的exence :: map
class MapElement
{
public:
int a;
char c;
};
int main()
{
MapElement m1,m2,m3;
map <char ,MapElement*> Mymap;
m1.a =10;m1.c = 'a';
m2.a =20;m2.c ='b';
m3.a =30;m3.c ='c';
map<char,MapElement*>::iterator iter = Mymap.begin();
Mymap.insert(iter , std::pair<int, MapElement*>('1',&m1));
Mymap.insert(iter , std::pair<int, MapElement*>('1',&m2));
cout<<Mymap['1']->a;
try
{
cout<<Mymap['2']->a;
}
catch(exception e)
{
cout<<e.what();
}
catch(...)
{
cout<< "unknown error";
}
}
我该如何处理这个异常?
我试过的std :: out_of_range,但它仍然没有捕捉异常。我在代码块和Visual Studio中都尝试过。 – kernel
@kernel,工作正常:http://ideone.com/FR4svY – hmjd