Составители:
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
- …
- следующая ›
- последняя »
