Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Исключения. Как не допустить логических ошибок при выполнении программы (C++)

Содержание

Как не допустить логических ошибок при выполнении программы?
Исключения Как не допустить логических ошибок при выполнении программы? Некорректное создание  объектов классов(1)class Table{  	int *l,*w,*h;  	char* color; Некорректное создание  объектов классов(2)bool Table::Init(int l1,int w1, int h1,char* col){ Некорректное создание  объектов классов(3)Table::Table (int len,int wid, int hei,char* col,bool& err){cout Некорректное создание  объектов классов(4)void Table::Print(){	 cout Некорректное создание  объектов классов(5)int main(){  bool err=false;  Table * Механизм исключенийthrow 				для обозначения кода ошибкиtry 				для начала блока, в котором может Что такое исключениеИсключение – это объект, а не ситуация.С исключением можно работать Определение исключенияСинтаксис:throw выражение_генерации_исключения;Примеры:throw “Ошибка: деление на ноль”; throw 1; throw s[i]; Объект - исключениеthrow MyException(1,”Error 1”); // оператор-ловушка - catch(MyException m)throw new MyException(1,”Error Перехват исключенияСинтаксис:try {		/* контролируемый блок */	  }catch (спецификация исключения № 1) Спецификация исключения(тип имя) 				Если необходимо объект – исключение 			использовать в блоке обработки(тип) Правила работы с tryЕсли сработал хоть один блок обработки исключений, то последующие не выполнятся. Правила работы с tryЕсли сработал хоть один блок обработки исключений, то последующие Правила работы с tryЕсли сработал хоть один блок обработки исключений, то последующие Правила работы с tryЕсли сработал хоть один блок обработки исключений, то последующие Пример: класс MyEx (1)class MyEx{	public:  	int code;  	char* message; Пример : класс MyEx (2)MyEx::MyEx (int a, char* b){  cout Пример : класс MyEx (3)MyEx::~MyEx(){  cout Пример : генерация исключений(1)void Table::Init (int len ,int wid, int hei, char* Пример : генерация исключений(2)Table::Table (int len, int wid, int hei, char *col){ Пример : генерация исключений(3)int main(){  try		{    	Table* T=new Пример : генерация исключений(3)catch(...)		{    	 cout Зачем нужны исключенияИсключение вынуждает вызывающий код признать состояние ошибки и обработать его.
Слайды презентации

Слайд 2


Как не допустить логических ошибок при выполнении программы?


Как не допустить логических ошибок при выполнении программы?

Слайд 3 Некорректное создание объектов классов(1)

class Table{
int *l,*w,*h;

Некорректное создание объектов классов(1)class Table{ 	int *l,*w,*h; 	char* color; 	bool Init(int

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 Некорректное создание объектов классов(2)
bool Table::Init(int l1,int w1, int

Некорректное создание объектов классов(2)bool Table::Init(int l1,int w1, int h1,char* col){ cout0)

h1,char* col)
{ cout

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 Некорректное создание объектов классов(3)
Table::Table (int len,int wid, int

Некорректное создание объектов классов(3)Table::Table (int len,int wid, int hei,char* col,bool& err){cout

hei,char* col,bool& err)
{
cout

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 Некорректное создание объектов классов(4)
void Table::Print()
{ cout

Некорректное создание объектов классов(4)void Table::Print(){	 cout

cout

w = "<<*w<<"\n";
cout<<"\t\t l = "<<*l<<"\n";
cout<<"\t\t color: "<}
Table::~Table()
{
cout<<"Table::~Table()\n";
delete h; delete l; delete w; delete[]color;
}



Слайд 7 Некорректное создание объектов классов(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
для обозначения кода ошибки
try
для начала

Механизм исключенийthrow 				для обозначения кода ошибкиtry 				для начала блока, в котором

блока, в котором может возникнуть «аварийная» ситуация
catch
для обработки

кода ошибки, выкидываемой throw.



Слайд 9 Что такое исключение

Исключение – это объект, а не

Что такое исключениеИсключение – это объект, а не ситуация.С исключением можно

ситуация.

С исключением можно работать как с переменной.

Тип объекта исключения

может быть любым.



Слайд 10 Определение исключения
Синтаксис:
throw выражение_генерации_исключения;

Примеры:

throw “Ошибка: деление на ноль”;
throw

Определение исключенияСинтаксис:throw выражение_генерации_исключения;Примеры:throw “Ошибка: деление на ноль”; throw 1; throw s[i];

1;
throw s[i];


Слайд 11 Объект - исключение
throw MyException(1,”Error 1”);
// оператор-ловушка -

Объект - исключениеthrow MyException(1,”Error 1”); // оператор-ловушка - catch(MyException m)throw new

catch(MyException m)

throw new MyException(1,”Error 1”);
// оператор-ловушка - catch(MyException

*m)



Слайд 12 Перехват исключения
Синтаксис:
try {
/* контролируемый блок */
}
catch

Перехват исключенияСинтаксис:try {		/* контролируемый блок */	 }catch (спецификация исключения № 1)

(спецификация исключения № 1)
{ /* блок обработки 1*/

}
catch (спецификация исключения № 2)
{ /* блок обработки 2*/ }

catch (спецификация исключения № n)
{ /* блок обработки n*/ }



Слайд 13 Спецификация исключения
(тип имя)
Если необходимо объект – исключение

Спецификация исключения(тип имя) 				Если необходимо объект – исключение 			использовать в блоке

использовать в блоке обработки
(тип)
Если в блоке обработки объект-исключение

не используется
(…)
Такой обработчик перехватывает все исключительные ситуации.



Слайд 14 Правила работы с try
Если сработал хоть один блок

Правила работы с tryЕсли сработал хоть один блок обработки исключений, то последующие не выполнятся.

обработки исключений, то последующие не выполнятся.


Слайд 15 Правила работы с try
Если сработал хоть один блок

Правила работы с tryЕсли сработал хоть один блок обработки исключений, то

обработки исключений, то последующие не выполнятся.
Последним обработчиком должен быть

самый общий вариант, для обработки всех исключений.



Слайд 16 Правила работы с try
Если сработал хоть один блок

Правила работы с tryЕсли сработал хоть один блок обработки исключений, то

обработки исключений, то последующие не выполнятся.
Последним обработчиком должен быть

самый общий вариант, для обработки всех исключений.
Если в блоке try не выпало исключительной ситуации, то все блоки catch пропускаются и выполняются те действия, которые дальше идут по коду.



Слайд 17 Правила работы с try
Если сработал хоть один блок

Правила работы с tryЕсли сработал хоть один блок обработки исключений, то

обработки исключений, то последующие не выполнятся.
Последним обработчиком должен быть

самый общий вариант, для обработки всех исключений.
Если в блоке try не выпало исключительной ситуации, то все блоки catch пропускаются и выполняются те действия, которые дальше идут по коду.
Блоки try и catch могут быть вложенными.



Слайд 18 Пример: класс MyEx (1)
class MyEx{
public:
int code;

Пример: класс MyEx (1)class MyEx{	public: 	int code; 	char* message; 	 MyEx(int a, char* b); 	~MyEx();};

char* message;
MyEx(int a, char* b);

~MyEx();
};



Слайд 19 Пример : класс MyEx (2)
MyEx::MyEx (int a, char*

Пример : класс MyEx (2)MyEx::MyEx (int a, char* b){ cout

b)
{
cout

char [ strlen(b) + 1 ];
strcpy ( message, b );
}



Слайд 20 Пример : класс MyEx (3)
MyEx::~MyEx()
{
cout

Пример : класс MyEx (3)MyEx::~MyEx(){ cout

delete[] message;
}



Слайд 21 Пример : генерация исключений(1)
void Table::Init (int len ,int

Пример : генерация исключений(1)void Table::Init (int len ,int wid, int hei,

wid, int hei, char* col)
{
*l=len; *w=wid; *h=hei;

strcpy(color,col);
}



Слайд 22 Пример : генерация исключений(2)
Table::Table (int len, int wid,

Пример : генерация исключений(2)Table::Table (int len, int wid, int hei, char

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 Пример : генерация исключений(3)
int main()
{
try
{

Пример : генерация исключений(3)int main(){ try		{  	Table* T=new Table(-1,5,6, “green”);

Table* T=new Table(-1,5,6, “green”);

T->Print();
delete T;
}
catch(MyEx e)
{
cout< }



Слайд 24 Пример : генерация исключений(3)
catch(...)
{

Пример : генерация исключений(3)catch(...)		{  	 cout

cout


  • Имя файла: isklyucheniya-kak-ne-dopustit-logicheskih-oshibok-pri-vypolnenii-programmy-c.pptx
  • Количество просмотров: 129
  • Количество скачиваний: 0