Разделы презентаций


Обработка исключений

Содержание

Обработка исключенийОбработка исключений (exception handling) – это механизм, который позволяет структурировать программу определенным образом для того, чтобы отделить часть обработки ошибок от других частей программы. Концептуально, обработка исключений включает в себя

Слайды и текст этой презентации

Слайд 1Обработка исключений

Обработка исключений

Слайд 2Обработка исключений
Обработка исключений (exception handling) – это механизм, который позволяет

структурировать программу определенным образом для того, чтобы отделить часть обработки

ошибок от других частей программы.

Концептуально, обработка исключений включает в себя две основные группы действий, которые связаны с тремя специальными ключевыми словами (try, throw, catch)
Обработка исключенийОбработка исключений (exception handling) – это механизм, который позволяет структурировать программу определенным образом для того, чтобы

Слайд 3Обработка исключений
Выброс исключений (throw) – прекращение исполнения первичного кода из-за

ошибки и извещение об ошибке. Выброс исключений происходит в специальном

блоке try.
Выброс исключений (catch) обеспечивает обработку случая исключения соответсвенно типу исключения. Перехват исключения происходит сразу за блоком try, в котором мог бы произойти выброс исключений.
Обработка исключенийВыброс исключений (throw) – прекращение исполнения первичного кода из-за ошибки и извещение об ошибке. Выброс исключений

Слайд 4Обработка исключений
Практически обработку ошибок можно реализовать также не используя механизм

обработки исключений, но в этом случае самому программисту необходимо создавать

конструкции для отправки сообщений об ошибке в место обработки ошибок, которое могло бы выражаться в виде функций специального назначения, или как дополнительные параметры функции, которые были бы предназначены для пересылки сообщений об ошибке между модулями.
Обработка исключенийПрактически обработку ошибок можно реализовать также не используя механизм обработки исключений, но в этом случае самому

Слайд 5Обработка исключений
Особенно удобна обработка исключений бывает в случаях, когда ошибка

констатирована на одном, а обработана на другом уровне иерархии вызова

функции. В то же самое время, нужно понимать, что использование стандартного метода обработки исключений связано с использованием дополнительных ресурсов.
Обработка исключенийОсобенно удобна обработка исключений бывает в случаях, когда ошибка констатирована на одном, а обработана на другом

Слайд 6Блок ‘try’
Блок ‘try’ – это часть программы, которая за

ключевым словом try включена в блок фигурных скобок, к которому

(включая функции на всех уровнях, вызванные из этого блока) относится обработка ситуаций реализованных за этим блоком исключений.
try
{
//зона определения ситуаций исключений
}

Возникновение ситуаций ошибок определяет сам программист – инфраструктура обработки исключений только помогает отправить сообщения об ошибках в место обработки.
Блок ‘try’ Блок ‘try’ – это часть программы, которая за ключевым словом try включена в блок фигурных

Слайд 7Выброс исключений ‘throw’
Используя оператор throw,определенное сообщение об ошибке (число, текст,

объект) отправляется на перехват в соответствующий блок catch. Выбрасывая исключения,

программа в соответствующем месте прерывается и обеспечивается окончание вызванных функций на всех уровнях (и, соответственно, ликвидация локальной переменной) для того, чтобы дойти до блока обработки ошибок.
Выброс исключений ‘throw’Используя оператор throw,определенное сообщение об ошибке (число, текст, объект) отправляется на перехват в соответствующий блок

Слайд 8Выброс исключений ‘throw’
Выбрасывая исключение важно не только значение, но и

тип, т.к. функция обработки исключения выбирается только соответсвенно выкидываемому типу.



throw "ERROR: Division by zero"
Выброс исключений ‘throw’Выбрасывая исключение важно не только значение, но и тип, т.к. функция обработки исключения выбирается только

Слайд 9Обработка исключений ‘catch’
За блоком try находится последовательность блоков catch, которая

напоминает функцию без возвращаемого типа и блок параметров, таким образом

обеспечивая обработку исключения соответственно типам.

catch ( parameter ) {catch_body}
catch ( parameter ) {catch_body}
catch ( parameter ) {catch_body}
catch ( ... ) {catch_body}

catch(…) отлавливает любые другие неописанные ошибки
Обработка исключений ‘catch’За блоком try находится последовательность блоков catch, которая напоминает функцию без возвращаемого типа и блок

Слайд 10Обработка исключений ‘catch’
Если блок catch с соответствующим типом не существует,

тогда обработка исключения происходит в блоке catch(...).
Если блок catch(...) не

существует, тогда ошибка пересылается в ближайший внешний блок обработки ошибок, но если и такой не существует, то программа заканчивается ошибкой.
Обработка исключений ‘catch’Если блок catch с соответствующим типом не существует, тогда обработка исключения происходит в блоке catch(...).Если

Слайд 11Обработка исключений
try
{
...
if (вид ошибки nr. 1)

throw some_exception1;
...
if (вид ошибки nr. 2)

throw some_exception2;
...
}
catch (T1 exc)
{ /* обработка исключения с типом T1 */ }
catch (T2 exc)
{ /* обработка исключений с типом T2 */ }
catch (...)
{ /* обработка других исключений */ }

Структура блоков try, throw, catch

Обработка исключенийtry{  ...  if (вид ошибки nr. 1) throw some_exception1;  ...  if (вид

Слайд 12Обработка исключения - пример
Следующий пример демонстрирует механизм обработки исключения для

функции process, которая считает значение выражения x + y /

z. Определяя значение функции, не должны нарушаться такие условия – z не равно 0, и слагаемые в пределах 0..100
Обработка исключения - примерСледующий пример демонстрирует механизм обработки исключения для функции process, которая считает значение выражения x

Слайд 13Обработка исключений - пример
#include
using namespace std;

double x_over_y

(double x, double y)
{
if (y == 0) throw

"ERROR: Division by zero";
return x / y;
}

double x_plus_y_over_z (double x, double y, double z)
{
double div = x_over_y (y, z);
if (x > 100 || div > 100) throw 100;
else if (x < 0 || div < 0) throw 0.0;
return x + div;
}

6. Выбрасывает исключения типа char*
13. Выбрасывает исключения типа int
14. Выбрасывает исключения типа float


Слайд 14Обработка исключений - пример
void process (double x, double y,

double z)
{
try
{
cout

<< x_plus_y_over_z (x, y, z) << endl;
}
catch (const char *error_text)
{
cout << error_text << endl;
}
catch (int error_num)
{
cout << "ERROR: Addend too big" << endl;
}
catch (...)
{
cout << "ERROR: Unknown error" << endl;
}
}

21. Вызываем функцию x_plus_y_over_z в блоке try, что означает
обработку всех реализованных исключений в этом блоке.

Обработка исключений - пример void process (double x, double y, double z){  try  {

Слайд 15Обработка исключений - пример
void process (double x, double y,

double z)
{
try
{
cout

<< x_plus_y_over_z (x, y, z) << endl;
}
catch (const char *error_text)
{
cout << error_text << endl;
}
catch (int error_num)
{
cout << "ERROR: Addend too big" << endl;
}
catch (...)
{
cout << "ERROR: Unknown error" << endl;
}
}

23. Лoвит исключения типа char*
27. Лoвит исключения типа int
31. Ловит исключения всех остальных типов

Обработка исключений - пример void process (double x, double y, double z){  try  {

Слайд 16Обработка исключений - пример
int main ()
{
process (2,

4, 0); // 2 + 4 / 0
process

(999, 4, 0.5); // 999 + 4 / 0.5
process (-2, 4, 0.5); // -2 + 4 / 0.5
process (2, 4, 0.5); // 2 + 4 / 0.5
system("pause");
return 0;
}

38.-41. тестирование try, throw, catch

Обработка исключений - пример int main (){  process (2, 4, 0); // 2 + 4 /

Слайд 17Обработка исключений
Механизм обработки исключений предназначен не для выявления ошибок в

программе, а для отправки сообщений о выявленных ошибок в специальное

место обработки.
Обработка исключенийМеханизм обработки исключений предназначен не для выявления ошибок в программе, а для отправки сообщений о выявленных

Слайд 18Практическая работа
Проведите обработку исключений вводя возраст людей. Значение не может

быть негативным и оно должно быть в интервале 0-200
Функция перемножает

два числа типа int. Проведите проверку на выход из границ типа int.
Опишите процесс вычисления заданного выражения 3+2*√х – 4 / x Обработайте ошибку извлечения квадратного корня из отрицательного числа, и деления на 0.
Практическая работаПроведите обработку исключений вводя возраст людей. Значение не может быть негативным и оно должно быть в

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

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

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

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


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

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