0

以下代码片段中哪个是有效的

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

或者

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

2 回答 2

4

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

于 2012-05-14T11:38:14.437 回答
1

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

于 2012-05-14T11:45:54.873 回答