哪个更安全?将"for"放入"Try"中,或者将"Try"放入"for"中?

Hit*_*847 -2 c# performance if-statement try-catch

我有这段代码,我想知道他们是否同样工作,只有他们的速度不同或者他们的行为完全不同?

   try
   {
     for (int i = Start; i < End; i++)
     {
         src.Samples[i].x = i;
         src.Samples[i].y = HR[i];
     }
   }
   catch{}
Run Code Online (Sandbox Code Playgroud)

要么

     for (int i = Start; i < End; i++)
     {
       try
       {
         src.Samples[i].x = i;
         src.Samples[i].y = HR[i];
       }
       catch
       {
         break;
       }
     }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

只是不要这样做 - 这是滥用例外,IMO.编写代码,以便在没有 try/catch 的情况下安全.如果您不知道是否HR足够长,请使用:

int cappedEnd = Math.Min(HR.Length, End);
for (int i = Start; i < cappedEnd; i++)
{
    src.Samples[i].x = i;
    src.Samples[i].y = HR[i];
}
Run Code Online (Sandbox Code Playgroud)

(Start如果可能无效,请使用类似的逻辑.)

如果你觉得你出于某种原因绝对不得不使用try/catch,那么我会抓住你期望抛出的确切类型,并把它放在循环的外面 - 只是为了让我感觉更糟糕.不,我不希望任何重大的性能差异.