Операционные системы. Марапулец Ю.В. - 50 стр.

UptoLike

Составители: 

csText = "In catch block";
pDC->TextOut( 50, vSize*iLine++, csText );
ption cause: ");
e->GetErrorMessage( szCause, 255 );
csText += szCause;
и к
возни о
о в по
то о р ки
примера является
демон
ерехвачено не будет.
сли необходимо предотвратить ошибку следует убрать знаки
/* доступным,
// ошибка б ет в систему
лючения, в том числе
{ ти!
csText = "In catch all block";
pDC->TextOut( 50, vSize*iLine++, csText );
*/
csText = "End of process";
pDC->TextOut( 10, vSize*iLine++, csText );
}
csText = _T("CExce
}
Следует отметить, что выполнение модуля Failed Catch может привест
кновению шибки в системной памяти, что потребует перезагрузки
системы. Н любом случае будет лучено предупреждающее сообщение.
Фрагмент, содержащий обработчик catch (...), закомментирован,
поскольку э единственная п дпрограмма об абот , способная
перехватывать ошибки доступа к памяти, а целью данного
страция событий, которые произойдут в том случае, если
соответствующее исключение п
Е
комментария в блоке catch(...).
// если сделать блок catch(...)
удет перехвачена и не попад
catch (...) // перехватывает все
// иск
// ошибки доступа к памя
}
5. Рассмотреть механизм исключения "Загрузка несуществующего
ресурса". Не все исключения генерируются системой автоматически. Во многих
случаях исключение пользователю необходимо породить самостоятельно.
Такая потребность возникает, когда обнаруживается неправильный результат
выполнения функции или нужно перенаправить поток выполнения в обход
последующих операторов. Эту задачу проще всего решить путем генерации
исключения. tc Блок ca h перехватит его, выдаст сообщение или осуществит
иного рода обработку.
Так, если в процессе перевода большой строковой таблицы,
предназначенной для применения в многоязыковой версии приложения,
потеряется одна или несколько строк (а такое вполне возможно), исходный код
программы все равно будет скомпилирован, поскольку идентификатор ресурса
сохранится. Однако в программе будут содержаться операторы, которые
50
           csText = "In catch block";
           pDC->TextOut( 50, vSize*iLine++, csText );
           csText = _T("CException cause: ");
           e->GetErrorMessage( szCause, 255 );
           csText += szCause;
     }

     Следует отметить, что выполнение модуля Failed Catch может привести к
возникновению ошибки в системной памяти, что потребует перезагрузки
системы. Но в любом случае будет получено предупреждающее сообщение.
     Фрагмент, содержащий обработчик catch (...), закомментирован,
поскольку    это   единственная    подпрограмма    обработки,    способная
перехватывать ошибки доступа к памяти, а целью данного примера является
демонстрация событий, которые произойдут в том случае, если
соответствующее исключение перехвачено не будет.
     Если необходимо предотвратить ошибку следует убрать знаки
комментария в блоке catch(...).

/*                         // если сделать блок catch(...) доступным,
                         // ошибка будет перехвачена и не попадет в систему
     catch (...)                    // перехватывает все
                                       // исключения, в том числе
     {                           // ошибки доступа к памяти!
            csText = "In catch all block";
            pDC->TextOut( 50, vSize*iLine++, csText );
     }
*/
     csText = "End of process";
     pDC->TextOut( 10, vSize*iLine++, csText );
}

     5. Рассмотреть механизм исключения "Загрузка несуществующего
ресурса". Не все исключения генерируются системой автоматически. Во многих
случаях исключение пользователю необходимо породить самостоятельно.
Такая потребность возникает, когда обнаруживается неправильный результат
выполнения функции или нужно перенаправить поток выполнения в обход
последующих операторов. Эту задачу проще всего решить путем генерации
исключения. Блок catch перехватит его, выдаст сообщение или осуществит
иного рода обработку.
     Так, если в процессе перевода большой строковой таблицы,
предназначенной для применения в многоязыковой версии приложения,
потеряется одна или несколько строк (а такое вполне возможно), исходный код
программы все равно будет скомпилирован, поскольку идентификатор ресурса
сохранится. Однако в программе будут содержаться операторы, которые

                                      50