即使我有一个捕获它的代码(如果它发生的话),我也会在IDE输出日志中收到此异常消息。std :: out_of_range异常捕捉它时?
下面的代码本身:
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
。
不要通过值来捕获异常。改用一个const引用。 –
为什么是const?我见过只使用引用的人,而不是常量。 – Pilpel
通常你在抓到它们时不会改变例外,是吗? –