【发布时间】:2014-06-24 08:11:42
【问题描述】:
我遇到了一个关于异常的问题。
代码如下,
try
{
auto it = set_difference(allInterfaces.begin(), allInterfaces.end(), eths.begin(),
eths.end(), newCards.begin());
}
catch(...)
{
cout << "exception thrown << endl;
}
我知道 set_difference() 正在引发异常,但程序退出并且 catch 块没有捕获异常。有没有办法捕捉异常?我认为一切都应该始终有效。
感谢您的帮助。
【问题讨论】:
-
你认为
set_difference抛出了什么异常? -
请记住,有些事情被称为异常,但它们是系统(或处理器)异常,而不是 C++ 异常。
catch块仅捕获来自throw的 C++ 异常,而不是任何其他类型的异常(例如可能导致的空指针访问)。 -
vector newCards 太小导致程序退出。我收到此错误:***检测到 glibc *** /networking: free(): invalid pointer: 0x000000000153d4a8 ***。也许这根本不是一个例外。
-
@Smithy:发布错误消息。
-
@Smithy 也不例外