处理几乎所有C ++中的异常

时间:2014-01-09 18:18:02

标签: c++ exception-handling c++98

我有一个try块,它目前捕获所有异常:

try
{
    // do some work
}
catch (std::exception &ex)
{
    // log ex
}

但是,我不想捕获访问冲突。我可以将其指定为我的处理程序的异常(可以这么说)吗?或者我应该先抓住它并重新抛出它?

1 个答案:

答案 0 :(得分:9)

您已经 catch访问违规行为,您永远无法做到。访问冲突不是C ++异常。他们是"例外"另一种 - 由您的操作系统引发的。我不想打电话给他们"例外"事实上,实际上。

Linux和Linux类操作系统只是终止执行访问冲突的进程(使用信号)。

Windows改为使用名为"结构化异常"您可以捕获并可能忽略在Visual Studio中使用语言扩展。我们现在正在冒险,但你可以read up about those。我还是不推荐使用它们,请注意。一旦您有访问权限违规行为,我个人会满足于说“所有投注都已关闭"”并且"我们需要进行一些调试"。