以下哪个异常处理代码段有效,原因

which of the following exception handling code snippet is efficient and why

本文关键字:有效 原因 段有效 异常处理 代码      更新时间:2023-10-16

这在以下代码片段中是有效的

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

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

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

通常,try - catch块会妨碍编译器优化。例如,如果引入异常处理程序,则在循环中创建的任何临时将具有不同的作用域(因此具有不同的销毁语义)。因此,如果要在循环中进行任何异常处理,则可能不会发生某些/所有循环优化。