2015-08-08 92 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