Delphi. Урок 16. Исключительные ситуации

A

AngelOfLove

В этом уроке мы поговорим о том, что же такое исключительные ситуации.
Исключительной ситуацией называется такая ситуация, когда происходит какая-либо ошибка во время выполения программы и ее дальнейшая работы принудительно прерывается. Ситуаций таких, уж поверьте, существует огромное множество. Возьмем банальнейший пример такой ситуации — деление на ноль. Конечно же, заранее предусмотреть ее достаточно легко, например проверять число на ноль, прежде чем делить на него. Но отследить все невозможно, особенно если программа «падает», например, из-за обращения к несозданному ранее объекту (Ошибка — Access Violation). Именно поэтому гораздо легче использовать обработку исключительных ситуаций в Delphi. Они позволяют без поиска причины возникновения ошибки отловить любую исключительную ситуацию в определенном участке кода, и произвести, если необходимо, определенные операции, т.е. обработать ошибку. Рассмотрим пример исключительной ситуации:

1 var s: TStringList;
2 begin
3 s.Add('test'); // попытка обратиться к несозданному объекту.
4 //(Нужно было ранее его создать "s := TStringList.Create;")
5 //Именно во время выполнения той строчки и возникнет ошибка
6 end;

Прежде чем отловить эту ошибку, давайте сначала рассмотрим синтаксис конструкции try — except:

1 try
2 //определенные операции
3 //в которых возможно выпадает ошибка
4 except
5 //обработка исключительной ситуации
6 //если произошла исключительная ситуация,
7 //то все последующие операции между try и except будут
8 //пропущены, затем выполнены операции, которые
9 //находятся после ключевого слова except
10 end;

Рассмотрим способ отлова ошибки из первого кода:

1 var s: TStringList;
2 begin
3 try
4 s.Add('test');
5 except
6 showmessage('Обращение к несозданному объекту');
7 end;
8 end;

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

Если оставить обработчик исключения пустым, т.е. ничего не писать между except и end, то ошибка будет по сути «проигнорирована». Однако это не значит, что она не произошла, ведь работа того кода, который находится между try и except была прервана аварийно.

Рассмотрим немного другую конструкцию — try — finally:


1 try
2 //определенные операции
3 //в которых возможно выпадает ошибка
4 finally
5 //операции, которые будут выполнены в любом случае
6 //если исключения не произошло
7 //или оно произошло
8 end;

Получение текста самой ошибки:

1 Try
2 //Вызываем ошибку
3 Except
4 on E : Exception do
5 ShowMessage(E.ClassName+' ошибка с сообщением : '+E.Message);
6 end;
 
Похожие темы
A Delphi. Урок 17. Типы Программирование 0
A Delphi. Урок 15. Математические операции Программирование 0
A Delphi. Урок 14. Работа со списками строк TStringList или «сложные» типы Программирование 0
A Delphi. Урок 13. Работа со строками Программирование 0
A Delphi. Урок 12. Преобразование числа в строку и строки в число Программирование 0
A Delphi для начинающих. Урок 11. Процедуры и функции Программирование 0
A Delphi для начинающих. Урок 10. Циклы. Работа с массивами Программирование 0
A Delphi для начинающих – Урок 9 – Массивы Программирование 0
A Delphi для начинающих – Урок 8 – Условия. Оператор Case Программирование 0
A Delphi для начинающих – Урок 7 – Условия. Оператор IF Программирование 0
A Delphi для начинающих – Урок 6 – Пишем свой калькулятор Программирование 0
A Delphi для начинающих – Урок 5 – Работаем с компонентами Программирование 0
A Delphi для начинающих – Урок 4 – Работа с переменными Программирование 0
A Delphi для начинающих – Урок 3 – Создание переменных Программирование 0
A Delphi для начинающих – Урок 2 — События Программирование 0
A Delphi для начинающих — Урок 1 — Среда разработки Delphi Программирование 0
M [Delphi] Работа VKAPI, на примере бота Программирование 3
T Пишем WinLocker на Delphi Программирование 0
D Нужна помощь по Delphi! ЗАПЛАЧУ! Программирование 1
A Потоки в Delphi. TThread Программирование 0
A Простые шутку в DELPHI Программирование 5
A Мои старые исходники на Delphi Программирование 1
A Несколько шпор по Delphi =) Программирование 3
L Загружаем компьютер другу. Delphi,rad studio Программирование 0
I Country IP Ranges Generator v1.0 [Source][Delphi] Программирование 3
B Помощь [Delphi] Программирование 0
B VK Post Grabber [Source][Delphi] Программирование 0
Admin [delphi] downloader winapi Программирование 0
Support81 Урок не выучен: Onyx теряет $3,8 млн из-за старой уязвимости Новости в сети 0
X Изучение Си (урок 6) Программирование 1
X Изучение Си (урок 5) Программирование 0
X Изучение Си (урок 4) Программирование 0
X Изучение Си (урок 3) Программирование 0
X Изучение Си (урок 2( Программирование 0
X Изучение Си (урок 1) Программирование 1
Ж HTML/CSS, Урок 2 Программирование 3
Ж Садись присаживайся, курс по HTML/CSS, урок 1 Программирование 1
K Уроки по XSS: Урок 3. Контексты внедрения XSS Уязвимости и взлом 0
K Уроки по XSS: Урок 2. Скрытая передача данных, перехват нажатия клавиш, изменение внешнего вида сайта, подцепление на BeEF, фишинг, подсказки обхода ф Уязвимости и взлом 0
K Уроки по XSS: Урок 1. Основы XSS и поиск уязвимых к XSS сайтов Уязвимости и взлом 0

Название темы