Составители:
CDC *pDC = GetDC() ;
CSize cSize = pDC->GetTextExtent( "A", 1 );
t vSize = cSize.cy, iLine = 0;
предшествующего текста
xt = "Starting process";
C->TextOut( 50, vSize*iLine++, csText );
try
{
xt = "In outer try block";
C->TextOut ( 50, vSize*iLine++, csText );
try
{
sText = "About to cause exception ...";
vSize*iLine++, csText );
момент команда ForceException готова породить исключение и
передать его внутреннему блоку catch, предотвращая выполнение следующих
операторов.
ecution "
"has passed to the catch block";
pDC->TextOut( 50, vSize*iLine++, csText );
амяти), не относится ни к одному из этих классов. Поэтому
реаль
ераторы catch имеют практически одно и то же тело (различаются
лишь на экран строкой), поэтому достаточно рассмотреть одну
структуру:
catch( CMemoryException *e ) // нехватка памяти
{
in
CString csText;
Invalidate();
OnPaint(); // удаление всего
csTe
pD
csTe
pD
csText = "In inner try block";
pDC->TextOut( 90, vSize*iLine+.+, csText );
c
pDC->TextOut( 90,
ForceException ();
В этот
csText = "This line will not display because ex
}
Далее следует набор блоков catch, каждый из которых предназначен для
перехвата исключения, тип которого определяется классом, производным от
CException. Но тип исключения, задействованного в данном примере (ошибка
доступа к п
ный перехват не произойдет до тех пор, пока не будет найден подходящий
обработчик.
Все оп
выводимой
TCHAR szCause[255];
45
CDC *pDC = GetDC() ; CSize cSize = pDC->GetTextExtent( "A", 1 ); int vSize = cSize.cy, iLine = 0; CString csText; Invalidate(); OnPaint(); // удаление всего предшествующего текста csText = "Starting process"; pDC->TextOut( 50, 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 ); ForceException (); В этот момент команда ForceException готова породить исключение и передать его внутреннему блоку catch, предотвращая выполнение следующих операторов. csText = "This line will not display because execution " "has passed to the catch block"; pDC->TextOut( 50, vSize*iLine++, csText ); } Далее следует набор блоков catch, каждый из которых предназначен для перехвата исключения, тип которого определяется классом, производным от CException. Но тип исключения, задействованного в данном примере (ошибка доступа к памяти), не относится ни к одному из этих классов. Поэтому реальный перехват не произойдет до тех пор, пока не будет найден подходящий обработчик. Все операторы catch имеют практически одно и то же тело (различаются лишь выводимой на экран строкой), поэтому достаточно рассмотреть одну структуру: catch( CMemoryException *e ) // нехватка памяти { TCHAR szCause[255]; 45
Страницы
- « первая
- ‹ предыдущая
- …
- 43
- 44
- 45
- 46
- 47
- …
- следующая ›
- последняя »