我有一个try块,它目前捕获所有异常:
try
{
// do some work
}
catch (std::exception &ex)
{
// log ex
}
但是,我不想捕获访问冲突。我可以将其指定为我的处理程序的异常(可以这么说)吗?或者我应该先抓住它并重新抛出它?
答案 0 :(得分:9)
您已经不 catch
访问违规行为,您永远无法做到。访问冲突不是C ++异常。他们是"例外"另一种 - 由您的操作系统引发的。我不想打电话给他们"例外"事实上,实际上。
Linux和Linux类操作系统只是终止执行访问冲突的进程(使用信号)。
Windows改为使用名为"结构化异常"您可以捕获并可能忽略在Visual Studio中使用语言扩展。我们现在正在冒险,但你可以read up about those。我还是不推荐使用它们,请注意。一旦您有访问权限违规行为,我个人会满足于说“所有投注都已关闭"”并且"我们需要进行一些调试"。