以下代码片段中哪个是有效的
for(int i=0; i<10; i++)
{
try
{
...
}
catch ()
{
...
}
}
或者
try
{
for(int i=0; i<10; i++)
{
...
}
}
catch ()
{
...
}
以下代码片段中哪个是有效的
for(int i=0; i<10; i++)
{
try
{
...
}
catch ()
{
...
}
}
或者
try
{
for(int i=0; i<10; i++)
{
...
}
}
catch ()
{
...
}
答案是在大多数实现中“没有区别”,但如果有区别,显然将更多代码放入for
循环的那个效率会降低,因为为try
块生成的代码(如果有的话,并且请记住,通常没有)将被执行更多次。
通常,try
-catch
块会妨碍编译器优化。例如,如果您引入异常处理程序,在循环中创建的任何临时对象都将具有不同的范围(因此具有不同的破坏语义)。因此,如果您要在循环中进行任何异常处理,则可能不会发生某些/所有循环优化。