Re[3]: Cтратегии обработки ошибок
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 17.03.04 15:13
Оценка:
DG>>Центральная — причем, она делается в первую очередь, на случай в том числе и непредвиденных ошибок).
DG>>Далее добавляются локальные обработчики для тех случаев, когда по месту мы можем точнее понять/устранить причину ошибки.

КВ>Очень интересный вопрос — а нельзя ли привести несколько примеров ? Например для работы с GUI, клиент-сервера ну и т.п.


while(GetMessage())
{
   try
   {
     TranslateMessage();
   }
   catch(exception exc)
   {
      ОкноОшибок.ВывестиОшибку(exc.Message);
   }
}


Это центральная обработка.
Которая хорошо себя ведет даже для непредвиденных ошибок, например, программа была запущена с CD.
т.е. если пользователь "нажмет" команду "сохранить настройки", а диск защищен от записи, то пользователь получит корректное поведение: выведется сообщение об ошибке.

  void SaveOptions()
  {
    try
    {
      SaveOptionToDefaultFile();
    }
    catch (IOException exc)
    {
      СпроситьПользователяОДругомМестеСохраненияНастроек();
      SaveOptionsToAnotherFile();      
    }

  }

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