以下是伪代码:

myGoto:
try
{
   // do some db updating
   myDB.doOptimisticConcurrency();

} catch (MyConcExeption ex) {

   if (tried < fiveTimes) {
       myDB.Refresh();
       tried++;
       goto myGoto;
   }

}


我在一个方法中有多个try-catch块,并且我不想从一开始就为每个抛出的异常重新调用我的方法。在这种情况下使用goto是否可以接受?

最佳答案

您可以将其更改为:

while (tried < fiveTimes)
try
{
   // do some db updating
   myDB.doOptimisticConcurrency();
   break;
}
catch (MyConcExeption ex)
{
   tried++;
   myDB.Refresh();
}

08-24 13:21