Составители:
выводят несуществующие записи строковой таблицы. Эта ошибка сама по себе
не порождает исключения. Просто в случае отсутствия искомой записи
опера
с внутреннего и внешнего блоков 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
- …
- следующая ›
- последняя »
