Составители:
перехватывается (и обрабатывается) обработчиком CResourceException,
оператор throw не выполняется. Поэтому внешний блок try продолжает
выполнение и отображает следующее сообщение.
displays because";
r catch block";
pDC->TextOut( 50, vSize*iLine++, csText );
tch (...) // перехватывает все исключения!!!
{
own exception";
pDC->TextOut( 50, vSize*iLine++, csText );
pDC->TextOut( 10, vSize*iLine++, csText );
}
ять различные операции в зависимости от условия возникновения
исклю н
csText = "Still in the outer try block. This line
pDC->TextOut( 50, vSize*iLine++, csText );
csText = "execution was not thrown to the oute
}
ca
csText = "In outer catch all block, catching thr
}
csText = "End of process";
Приложение может по-разному реагировать на исключения путем
использования различных обработчиков. Кроме того, каждый обработчик
может выполн
че ия.
6. Рассмотреть пример обработки пользовательского исключения.
Пользовательские исключения всегда должны генерироваться явным образом.
Система не имеет возможности распознавать пользовательские ошибки,
поскольку они обычно происходят в контексте приложения. Таким образом,
польз
е процедуре, где
асположены блоки try/catch. Рассмотреть следующий пример:
{ шла ошибка
rException() ;
return TRUE;
об ошибке, а затем
функц
n вызывается из следующей подпрограммы,
содержащей блоки try/catch:
d CExceptionsView::OnExceptionsUserexception()
{
овательские исключения всегда следует определять самостоятельно.
Исключения должны происходить не обязательно в той ж
р
BOOL CExceptionsView::UserException()
// предположим, что произо
AfxMessageBox( "Drat! The XDR Veng operation failed!" );
AfxThrowUSe
}
В данном фрагменте кода функция UserException отображает окно
сообщения (рис. 6.5), в котором приведена информация
ия AfxThrowUserException генерирует исключение.
Функция UserExceptio
voi
CDC *pDC = GetDC();
53
перехватывается (и обрабатывается) обработчиком CResourceException, оператор throw не выполняется. Поэтому внешний блок try продолжает выполнение и отображает следующее сообщение. csText = "Still in the outer try block. This line displays because"; pDC->TextOut( 50, vSize*iLine++, csText ); csText = "execution was not thrown to the outer catch block"; pDC->TextOut( 50, vSize*iLine++, csText ); } catch (...) // перехватывает все исключения!!! { csText = "In outer catch all block, catching thrown exception"; pDC->TextOut( 50, vSize*iLine++, csText ); } csText = "End of process"; pDC->TextOut( 10, vSize*iLine++, csText ); } Приложение может по-разному реагировать на исключения путем использования различных обработчиков. Кроме того, каждый обработчик может выполнять различные операции в зависимости от условия возникновения исключения. 6. Рассмотреть пример обработки пользовательского исключения. Пользовательские исключения всегда должны генерироваться явным образом. Система не имеет возможности распознавать пользовательские ошибки, поскольку они обычно происходят в контексте приложения. Таким образом, пользовательские исключения всегда следует определять самостоятельно. Исключения должны происходить не обязательно в той же процедуре, где расположены блоки try/catch. Рассмотреть следующий пример: BOOL CExceptionsView::UserException() { // предположим, что произошла ошибка AfxMessageBox( "Drat! The XDR Veng operation failed!" ); AfxThrowUSerException() ; return TRUE; } В данном фрагменте кода функция UserException отображает окно сообщения (рис. 6.5), в котором приведена информация об ошибке, а затем функция AfxThrowUserException генерирует исключение. Функция UserException вызывается из следующей подпрограммы, содержащей блоки try/catch: void CExceptionsView::OnExceptionsUserexception() { CDC *pDC = GetDC(); 53
Страницы
- « первая
- ‹ предыдущая
- …
- 51
- 52
- 53
- 54
- 55
- …
- следующая ›
- последняя »