Составители:
*/
catch ( COleException *e ) // OLE-исключения
}
tch(COleDispatchException *e ) // исключения диспетчеризации
// (OLE-автоматизации)
catch( CUserException *e ) // выводит окно сообщения,
//а затем генерирует исключение CException
...
след за этим следует блок catch (CException *e). В противном случае
компилятор
catch ен следовать после предыдущих блоков,
{ пилятор выдаст код ошибки
e->GetErrorMessage( szCause, 255 ); csText += szCause;
pDC->TextOut( 90, vSize*iLine++, csText );
лючение, в программу включен блок catch
(...), который перехватывает все исключения, но выдает не очень полную
информацию
catch( лючений!!!
{
pDC->TextOut( 90, vSize*iLine++, csText );
throw; // передает исключение внешнему блоку catch,
// приведенному ниже
{
...
ca
{
...
}
{
}
В
воспринял бы предыдущие блоки как ошибочные.
( CException *e ) // долж
// иначе ком
TCHAR szCause[255] ;
csText = "CException cause: ";
}
И поскольку нам известно, что ни один из классов CException на самом
деле не может обработать данное иск
о том, что произошло.
...) // перехват всех иск
csText = "In inner catch all block: ";
pDC->TextOut( 90, vSize*iLine++, csText );
csText = "Throwing exception to outer catch block: ";
}
Исключение, произошедшее во внутреннем блоке try, перехватывается
внутренним блоком catch и передается внешнему блоку catch. Оператор throw
предотвращает выполнение фрагмента программы, который следует после
47
*/ catch ( COleException *e ) // OLE-исключения { ... } catch(COleDispatchException *e ) // исключения диспетчеризации // (OLE-автоматизации) { ... } catch( CUserException *e ) // выводит окно сообщения, { //а затем генерирует исключение CException ... } Вслед за этим следует блок catch (CException *e). В противном случае компилятор воспринял бы предыдущие блоки как ошибочные. catch ( CException *e ) // должен следовать после предыдущих блоков, { // иначе компилятор выдаст код ошибки TCHAR szCause[255] ; csText = "CException cause: "; e->GetErrorMessage( szCause, 255 ); csText += szCause; pDC->TextOut( 90, vSize*iLine++, csText ); } И поскольку нам известно, что ни один из классов CException на самом деле не может обработать данное исключение, в программу включен блок catch (...), который перехватывает все исключения, но выдает не очень полную информацию о том, что произошло. catch(...) // перехват всех исключений!!! { csText = "In inner catch all block: "; pDC->TextOut( 90, vSize*iLine++, csText ); csText = "Throwing exception to outer catch block: "; pDC->TextOut( 90, vSize*iLine++, csText ); throw; // передает исключение внешнему блоку catch, // приведенному ниже } Исключение, произошедшее во внутреннем блоке try, перехватывается внутренним блоком catch и передается внешнему блоку catch. Оператор throw предотвращает выполнение фрагмента программы, который следует после 47
Страницы
- « первая
- ‹ предыдущая
- …
- 45
- 46
- 47
- 48
- 49
- …
- следующая ›
- последняя »