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