DG>>Центральная — причем, она делается в первую очередь, на случай в том числе и непредвиденных ошибок).
DG>>Далее добавляются локальные обработчики для тех случаев, когда по месту мы можем точнее понять/устранить причину ошибки.
КВ>Очень интересный вопрос — а нельзя ли привести несколько примеров ? Например для работы с GUI, клиент-сервера ну и т.п.
while(GetMessage())
{
try
{
TranslateMessage();
}
catch(exception exc)
{
ОкноОшибок.ВывестиОшибку(exc.Message);
}
}
Это центральная обработка.
Которая хорошо себя ведет даже для непредвиденных ошибок, например, программа была запущена с CD.
т.е. если пользователь "нажмет" команду "сохранить настройки", а диск защищен от записи, то пользователь получит корректное поведение: выведется сообщение об ошибке.
void SaveOptions()
{
try
{
SaveOptionToDefaultFile();
}
catch (IOException exc)
{
СпроситьПользователяОДругомМестеСохраненияНастроек();
SaveOptionsToAnotherFile();
}
}
Добавили локальную обработку, т.к. здесь мы точнее знаем, что необходимо делать, если не записался файл настроек.