2013-08-22 4 views
1

Это моя функция, кто ищет файлы из заданного пути:Продолжить поиск после улова Доступа к исключению пути

static void dirSearch(string dir) 
{ 
    try 
    { 
     foreach (string item in Directory.GetDirectories(dir)) 
     { 
      Console.WriteLine(item); 
      foreach (string str in Directory.GetFiles(item)) 
      { 
       Console.WriteLine("\t" + str); 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
    } 
} 

почему после того, как поймать за исключение функции остановку и не продолжить и показать мне остальную часть моих файлов из папок с разрешения?

ответ

3

Функция останавливается после обнаружения исключения, поскольку try/catch находится вне цикла. Переместить его в петлю, чтобы получить эффект, который вы хотите:

static void dirSearch(string dir) 
{ 
    foreach (string item in Directory.GetDirectories(dir)) 
    { 
     Console.WriteLine(item); 
     try 
     { 
      foreach (string str in Directory.GetFiles(item)) 
      { 
       Console.WriteLine("\t" + str); 
      } 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 
    } 
} 

Обратите внимание, что эта функция будет искать только один уровень каталогов. Если вы хотите найти рекурсивно, вам нужно вызвать dirSearch для каждого каталога, который вы найдете, например:

static void dirSearch(string dir) 
{ 
    Console.WriteLine(dir); 
    foreach (string item in Directory.GetDirectories(dir)) 
    { 
     try 
     { 
      dirSearch(item); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 
    } 
    foreach (string str in Directory.GetFiles(dir)) 
    { 
     Console.WriteLine("\t" + str); 
    } 
} 
+0

Где я должен поставить вызов dirSearch? – user2214609

+0

Что-то не так, второй должен быть другой, может быть, другое место? – user2214609

+0

@ user2214609 Вы видите, что не так? Это простая ошибка копирования/вставки. Если вы можете понять это, не глядя на мое редактирование, вы поняли этот метод. – dasblinkenlight

Смежные вопросы