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

UptoLike

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

Для удобства в каждом примере в окне приложения отображается
последовательность текстовых сообщений, сопровождающих процесс
обработки исключения.
2. Рассмотреть механизм простейшего обработчика исключений.
Блок
try/catch перехватывает исключение при вызове процедуры ForceException,
которая порождает исключение доступа к памяти. На рис. 6.1 показано окно
программы, сообщения в котором позволяют отслеживать ход выполнения
процедуры.
Рис. 6.1. Окно, предназначенное для наблюдения за работой простейшего
обработчика исключений
В примере исключения перехватываются внутри блока catch (...) и не
приводят к системной ошибке.
void CExceptionsView::OnExceptionsSimplehandler()
{
CDC *pDC = GetDC();
CSize cSize = pDC->GetTextExtent( "A", 1 ); // получить вертикальный
размер текста
int vSize = cSize.cy, iLine = 0;
CString csText;
Каждый из обработчиков начинается с команды получения контекста
устройства, а затем вызывает функцию GetTextExtent, предназначенную для
определения размера строки текста по вертикали. Это значение используется
для разделения строк при отображении сообщений. Кроме того, вызываются
43
       Для удобства в каждом примере в окне приложения отображается
последовательность текстовых сообщений, сопровождающих процесс
обработки исключения.
       2. Рассмотреть механизм простейшего обработчика исключений. Блок
try/catch перехватывает исключение при вызове процедуры ForceException,
которая порождает исключение доступа к памяти. На рис. 6.1 показано окно
программы, сообщения в котором позволяют отслеживать ход выполнения
процедуры.




     Рис. 6.1. Окно, предназначенное для наблюдения за работой простейшего
             обработчика исключений

     В примере исключения перехватываются внутри блока catch (...) и не
приводят к системной ошибке.

void CExceptionsView::OnExceptionsSimplehandler()
{
      CDC *pDC = GetDC();
      CSize cSize = pDC->GetTextExtent( "A", 1 ); // получить вертикальный
   размер текста
      int vSize = cSize.cy, iLine = 0;
      CString csText;

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


                                     43