Вграден в С++ механизъм за реакция на изключителни събития
| Информационни технологии | 2009-12-04 | 66 сваляния |
21 Вграден в С++ механизъм за реакция на изключителни събития (С++ Exception Handling). Стандартни обекти на exception библиотеката в ANSII С++ стандарт. Прихващане на изключителни състояния в етапа конструиране на обект особености.
int Divide( int n1, int n2 )
{
int nReturn = 0;
try{
if( !n2 ) throw range_error();
nReturn = n1 / n2;
}
catch ( range_error& e ){
cout << опит за / на 0 << endl;
}
return nReturn;
}
В try блока се генерират изключителни ситуации. Може да се генерира дъщерна изключителна ситуация, а да се прихване родителска. Трябва try и catch да са в една функция. Ако ниама catch, то се търси в обхващащата функция дали има catch, ако никъде няма то се извиква terminate. При генериране на изключителни ситуации с throw автоматично се изпълняват деструкторите на всички обекти създадени от началото на try блока.
S
tandart Exception Library

exception
logic_error runtime_error



domain_error (вътр. грешка) range_error
invalid_argument overflow_error

l
ength_error
o
ut_of_range
SomeFunc()
{
try{..
throw range_error( невъзможност за заделяне достатъчно памет);
}
catch( runtime_error e){
cout << e.what() << endl ; // e.what() стандартна (извиква съобщение).
}
}
Интересен синтаксис е следният:
catch () // прихваща за обработка всички exceptions.
Важно е да се обхване в секцията кода на . Конструктор, тъй като не връща стойност т.е. не може да информира за успех или неуспех относно работата му.
{ cout << sssdcg << endl;
throw; }}
Тагове от реферата: събия, реаия, граден, мехнизъм











