Оцените презентацию от 1 до 5 баллов!
Тип файла:
ppt / pptx (powerpoint)
Всего слайдов:
25 слайдов
Для класса:
1,2,3,4,5,6,7,8,9,10,11
Размер файла:
108.24 kB
Просмотров:
57
Скачиваний:
0
Автор:
неизвестен
Слайды и текст к этой презентации:
№1 слайд![Исключения](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img0.jpg)
Содержание слайда: Исключения
№2 слайд![](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img1.jpg)
№3 слайд![Некорректное создание](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img2.jpg)
Содержание слайда: Некорректное создание
объектов классов(1)
class Table{
int *l,*w,*h;
char* color;
bool Init(int l1,int w1, int h1,char* col);
public:
Table(int len, int wid, int hei ,char* col, bool& err);
void Print();
~Table();
};
№4 слайд![Некорректное создание](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img3.jpg)
Содержание слайда: Некорректное создание
объектов классов(2)
bool Table::Init(int l1,int w1, int h1,char* col)
{ cout<<"bool Table::Init(int l1,int w1, int h1,char* col)\n";
if( (l1>0) && (h1>0) && (w1>0) )
{
*l=l1;*h=h1;*w=w1;
strcpy(color,col);
return true;
}
else{
cout<<"\tError, incorreect data init\n";
return false; } }
№5 слайд![Некорректное создание](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img4.jpg)
Содержание слайда: Некорректное создание
объектов классов(3)
Table::Table (int len,int wid, int hei,char* col,bool& err)
{
cout<<"Table::Table(int len,int wid, int hei,char col,bool& err)\n";
h=new int; l=new int; w=new int;
color=new char[20];
err=Init(len, wid, hei, col);
if(!err)
{
delete this;
}
else cout<<"Create Table\n";
}
№6 слайд![Некорректное создание](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img5.jpg)
Содержание слайда: Некорректное создание
объектов классов(4)
void Table::Print()
{ cout<<"void Table::Print()\n";
cout<<"\tTable information:\n";
cout<<"\t\t h = "<<*h<<"\n";
cout<<"\t\t w = "<<*w<<"\n";
cout<<"\t\t l = "<<*l<<"\n";
cout<<"\t\t color: "<<color<<"\n\n";
}
Table::~Table()
{
cout<<"Table::~Table()\n";
delete h; delete l; delete w; delete[]color;
}
№7 слайд![Некорректное создание](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img6.jpg)
Содержание слайда: Некорректное создание
объектов классов(5)
int main()
{
bool err=false;
Table * T= new Table(-10,10,10,"black",err);
if(!err) { T=NULL; return -1; }
T->Print();
delete T;
return 0;
}
№8 слайд![Механизм исключений throw для](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img7.jpg)
Содержание слайда: Механизм исключений
throw
для обозначения кода ошибки
try
для начала блока, в котором может возникнуть «аварийная» ситуация
catch
для обработки кода ошибки, выкидываемой throw.
№9 слайд![Что такое исключение](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img8.jpg)
Содержание слайда: Что такое исключение
Исключение – это объект, а не ситуация.
С исключением можно работать как с переменной.
Тип объекта исключения может быть любым.
№10 слайд![Определение исключения](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img9.jpg)
Содержание слайда: Определение исключения
Синтаксис:
throw выражение_генерации_исключения;
Примеры:
throw “Ошибка: деление на ноль”;
throw 1;
throw s[i];
№11 слайд![Объект - исключение throw](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img10.jpg)
Содержание слайда: Объект - исключение
throw MyException(1,”Error 1”);
// оператор-ловушка - catch(MyException m)
throw new MyException(1,”Error 1”);
// оператор-ловушка - catch(MyException *m)
№12 слайд![Перехват исключения Синтаксис](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img11.jpg)
Содержание слайда: Перехват исключения
Синтаксис:
try {
/* контролируемый блок */
}
catch (спецификация исключения № 1)
{ /* блок обработки 1*/ }
catch (спецификация исключения № 2)
{ /* блок обработки 2*/ }
…
catch (спецификация исключения № n)
{ /* блок обработки n*/ }
№13 слайд![Спецификация исключения тип](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img12.jpg)
Содержание слайда: Спецификация исключения
(тип имя)
Если необходимо объект – исключение использовать в блоке обработки
(тип)
Если в блоке обработки объект-исключение не используется
(…)
Такой обработчик перехватывает все исключительные ситуации.
№14 слайд![Правила работы с try Если](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img13.jpg)
Содержание слайда: Правила работы с try
Если сработал хоть один блок обработки исключений, то последующие не выполнятся.
№15 слайд![Правила работы с try Если](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img14.jpg)
Содержание слайда: Правила работы с try
Если сработал хоть один блок обработки исключений, то последующие не выполнятся.
Последним обработчиком должен быть самый общий вариант, для обработки всех исключений.
№16 слайд![Правила работы с try Если](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img15.jpg)
Содержание слайда: Правила работы с try
Если сработал хоть один блок обработки исключений, то последующие не выполнятся.
Последним обработчиком должен быть самый общий вариант, для обработки всех исключений.
Если в блоке try не выпало исключительной ситуации, то все блоки catch пропускаются и выполняются те действия, которые дальше идут по коду.
№17 слайд![Правила работы с try Если](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img16.jpg)
Содержание слайда: Правила работы с try
Если сработал хоть один блок обработки исключений, то последующие не выполнятся.
Последним обработчиком должен быть самый общий вариант, для обработки всех исключений.
Если в блоке try не выпало исключительной ситуации, то все блоки catch пропускаются и выполняются те действия, которые дальше идут по коду.
Блоки try и catch могут быть вложенными.
№18 слайд![Пример класс MyEx class MyEx](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img17.jpg)
Содержание слайда: Пример: класс MyEx (1)
class MyEx{
public:
int code;
char* message;
MyEx(int a, char* b);
~MyEx();
};
№19 слайд![Пример класс MyEx MyEx MyEx](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img18.jpg)
Содержание слайда: Пример : класс MyEx (2)
MyEx::MyEx (int a, char* b)
{
cout<<"MyEx::MyEx(int a,char* b)\n";
code=a;
message=new char [ strlen(b) + 1 ];
strcpy ( message, b );
}
№20 слайд![Пример класс MyEx MyEx MyEx](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img19.jpg)
Содержание слайда: Пример : класс MyEx (3)
MyEx::~MyEx()
{
cout<<"MyEx::~MyEx()\n";
delete[] message;
}
№21 слайд![Пример генерация исключений](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img20.jpg)
Содержание слайда: Пример : генерация исключений(1)
void Table::Init (int len ,int wid, int hei, char* col)
{
*l=len; *w=wid; *h=hei; strcpy(color,col);
}
№22 слайд![Пример генерация исключений](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img21.jpg)
Содержание слайда: Пример : генерация исключений(2)
Table::Table (int len, int wid, int hei, char *col)
{
if(len>0&&wid>0&&hei>0)
{ h=new int; l=new int; w=new int;
color=new char[20]; Init(len,wid,hei,col);
}
else {
throw(MyEx(1,"some parameters are not positive"));
} }
№23 слайд![Пример генерация исключений](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img22.jpg)
Содержание слайда: Пример : генерация исключений(3)
int main()
{
try
{
Table* T=new Table(-1,5,6, “green”);
T->Print();
delete T;
}
catch(MyEx e)
{
cout<<e.code<<" - error!"<<e.message<<endl;
}
№24 слайд![Пример генерация исключений](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img23.jpg)
Содержание слайда: Пример : генерация исключений(3)
catch(...)
{
cout<<"I catch everything"<<endl;
}
return 0;
}
№25 слайд![Зачем нужны исключения](/documents_6/8b93f0df46f6dd5ce8f30caa959195b8/img24.jpg)
Содержание слайда: Зачем нужны исключения
Исключение вынуждает вызывающий код признать состояние ошибки и обработать его.
Исключение обеспечивает четкое разделение между кодом, который обнаруживает ошибку, и кодом, который обрабатывает ошибку.