我的问题很模糊:o)-但这里有一个例子:
当我编写C代码时,我能够在出现故障时记录计数器的值:

   <...>
   for ( int i = 0 ; i < n ; i++ )
      if ( SUCCESS != myCall())
         Log( "Failure, i = %d", i );
   <...>

现在,使用异常,我得到:
  try
   {
      <...>
      for ( int i = 0 ; i < n ; i++ )
         myCall();
      <...>
   }
   catch ( Exception exception )
   {
      Log( "Failure ! Maybe in myCall() ? Don't know. i's value ? No clue." );
   }

当然,可以在try/catch语句之外声明“i”(这就是我要做的)。但我不喜欢它-我喜欢在使用它们的地方声明变量,而不是以前。
但也许我在这里遗漏了什么。你有什么好办法吗?
提前谢谢!
西尔文。
添加:mycall()是一个模糊的API调用-我不知道它能抛出什么。当然,我也可以在每个调用周围添加一个try/catch块,但是我最好使用返回代码?然后我会在重要的代码行周围添加很多噪音吗?是的。

最佳答案

怎么样:

for(int i = 0; i < n; i++)
{
  try
  {
    myCall();
  }
  catch(Exception e)
  {
    Log(String.Format("Problem with {0}", i));
  }
}

07-27 18:43