2015-08-08 48 views
0

即使我有一个捕获它的代码(如果它发生的话),我也会在IDE输出日志中收到此异常消息。std :: out_of_range异常捕捉它时?

enter image description here

下面的代码本身:

t_ptr obj_ptr; 

try { 
    obj_ptr = _objects.at(file); 
} 
catch (std::out_of_range e) { 
    return nullptr; 
} 

return obj_ptr.get(); 

难道是应该发生的?这不像我在std :: map.at()失败时使用obj_ptr

+3

不要通过值来捕获异常。改用一个const引用。 –

+0

为什么是const?我见过只使用引用的人,而不是常量。 – Pilpel

+1

通常你在抓到它们时不会改变例外,是吗? –

回答

3

“一次机会”异常意味着调试器发现异常已被抛出。这不是一个错误(事实上,执行继续),这只是对程序员的帮助,可能会导致错误地吞下异常。

+0

有没有办法避免这个调试器的消息?我正在使用Visual Studio 2010 – Pilpel

+0

我不知道,但你为什么在意? –

+0

当我编译并运行我的应用程序时,如果这些消息始终弹出,它看起来很麻烦。 – Pilpel