以下哪个异常处理代码段是有效的,为什么

时间:2012-05-14 11:34:22

标签: c++ exception-handling

以下代码段中有效率

for(int i=0; i<10; i++)
{
   try
   {
   ...
   }
   catch ()
   {
   ...
   }
}

try
   { 
   for(int i=0; i<10; i++)
    {
    ...
    }
   }
   catch ()
   {
   ...
   }

2 个答案:

答案 0 :(得分:4)

在大多数实现中答案是“没有区别”,但是如果存在差异,显然将更多代码放入for循环的那个代码效率会降低,因为为代码生成的代码try阻止(如果有,并记住,通常没有)将被执行更多次。

答案 1 :(得分:1)

通常,try - catch块将阻碍编译器优化。例如,如果引入异常处理程序,则在循环中创建的任何临时对象将具有不同的范围(因此具有不同的破坏语义)。因此,如果您要在循环中进行任何异常处理,则可能不会发生一些/全部loop-optimizations