Re: Обработка ошибки в блоке catch
От: Gremlin2 http://www.fb2library.net/
Дата: 04.12.12 12:02
Оценка:
Здравствуйте, .beginner, Вы писали:

B>Мне довольно часто приходится писать похожие обработчики ошибок,

B>когда в try-catch в блоке catch нужно сделать что то, что может снова привести к ошибке.
B>я решаю эту проблему неизящно, пример:
  Скрытый текст
B>
B>    private void LoadSettings()
B>    {
B>      string fileName = @"c:\Settings.xml";
B>      bool needDelete = false;
B>      try
B>      {
B>        // Пробуем загрузить настройки из файла, но не уверен, что файл правильный
B>        gc1.MainView.RestoreLayoutFromXml(fileName);
B>      }
B>      catch (Exception ex)
B>      {
B>        // ставим флаг, что онужно грохнуть такой нехороший файл
B>        needDelete = true;
B>      }
B>      if (needDelete)
B>      {
B>        try
B>        {
B>          File.Delete(fileName);
B>        }
B>        catch (Exception ex)
B>        {
B>        }
B>      }
B>    }

B>

B>Как то это громоздко. Нет ли способа делать это без двух блоков Try-catch и флага?
B>Спасибо за рекомендации!
А что мешает объединить всё в один блок?

    private void LoadSettings()
    {
      string fileName = @"c:\Settings.xml";
      bool needDelete = false;
      try
      {
        // Пробуем загрузить настройки из файла, но не уверен, что файл правильный
        gc1.MainView.RestoreLayoutFromXml(fileName);
      }
      catch (Exception ex)
      {
        try
        {
          File.Delete(fileName);
        }
        catch (Exception ex)
        {
        }
      }
    }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.