Составители:
выводят несуществующие записи строковой таблицы. Эта ошибка сама по себе
не порождает исключения. Просто в случае отсутствия искомой записи
опера
с внутреннего и внешнего блоков try и
демонстрирует применение оператора throw. Во внутреннем блоке try делается
oid C eptionsResourceexception()
tTextExtent( "A", 1 );
.cy, iLine = 0;
ествующий текст
xt = "Starting process";
C->TextOut( 10, vSize*iLine++, csText );
try
{
xt = "In outer try block";
C->TextOut( 50, vSize*iLine++, csText );
try
{
pDC->TextOut( 90, vSize*iLine++, csText );
) )
AfxThrowResourceException() ;
pDC->TextOut( 90, vSize*iLine++, csText );
.
оэтому вызывается функция AfxThrowResourceException, порождающая
исключение
atch( CResourceException *e ) // ошибка выделения ресурса
{
Exception cause: ";
тор LoadString возвращает строку нулевой длины. Программа Resource
Exception генерирует исключение при наличии этой ошибки.
Следующий пример начинается
попытка загрузить строковый ресурс.
v ExceptionsView::OnExc
{
CDC *pDC = GetDC() ;
CSize cSize = pDC->Ge
int vSize = cSize
CString csText, csMsg;
Invalidate();
OnPaint(); // удаляют весь предш
csTe
pD
csTe
pD
csText = "In inner try block";
pDC->TextOut( 90; vSize*iLine++, csText );
csText = "About to cause exception ...";
if( ! csText.LoadString ( IDS_NON_STRING
}
При успешном выполнении функции LoadString программа отобразила
бы загруженную строку. Но в строковой таблице нет соответствующей записи,
хотя файл Resource.H содержит определение идентификатора этого ресурса
П
, которое приводит к выполнению следующих блоков catch.
c
TCHAR szCause[255];
csText = "CResource
e->GetErrorMessage( szCause, 255 );
51
выводят несуществующие записи строковой таблицы. Эта ошибка сама по себе не порождает исключения. Просто в случае отсутствия искомой записи оператор LoadString возвращает строку нулевой длины. Программа Resource Exception генерирует исключение при наличии этой ошибки. Следующий пример начинается с внутреннего и внешнего блоков try и демонстрирует применение оператора throw. Во внутреннем блоке try делается попытка загрузить строковый ресурс. void CExceptionsView::OnExceptionsResourceexception() { CDC *pDC = GetDC() ; CSize cSize = pDC->GetTextExtent( "A", 1 ); int vSize = cSize.cy, iLine = 0; CString csText, csMsg; Invalidate(); OnPaint(); // удаляют весь предшествующий текст csText = "Starting process"; pDC->TextOut( 10, vSize*iLine++, csText ); try { csText = "In outer try block"; pDC->TextOut( 50, vSize*iLine++, csText ); try { csText = "In inner try block"; pDC->TextOut( 90; vSize*iLine++, csText ); csText = "About to cause exception ..."; pDC->TextOut( 90, vSize*iLine++, csText ); if( ! csText.LoadString ( IDS_NON_STRING ) ) AfxThrowResourceException() ; pDC->TextOut( 90, vSize*iLine++, csText ); } При успешном выполнении функции LoadString программа отобразила бы загруженную строку. Но в строковой таблице нет соответствующей записи, хотя файл Resource.H содержит определение идентификатора этого ресурса. Поэтому вызывается функция AfxThrowResourceException, порождающая исключение, которое приводит к выполнению следующих блоков catch. catch( CResourceException *e ) // ошибка выделения ресурса { TCHAR szCause[255]; csText = "CResourceException cause: "; e->GetErrorMessage( szCause, 255 ); 51
Страницы
- « первая
- ‹ предыдущая
- …
- 49
- 50
- 51
- 52
- 53
- …
- следующая ›
- последняя »