Работа с грешки и изключения в Delphi приложения

За съжаление, изграждането на приложения включва кодиране. Независимо колко внимателно пишете / отстранявате грешката на програмата си, ще бъде невъзможно да си представите всяка ситуация, която може да се обърка. Например неопитен потребител може да се опита да отвори несъществуващ файл или да въведе лоша стойност в поле за данни.
Потребителите правят грешки и ние трябва да сме готови да обработваме / предотвратяваме тези грешки винаги и когато е възможно.

Грешки, изключения?

Изключение обикновено е състояние на грешка или друго събитие, което прекъсва нормалния поток на изпълнение в приложение. Всеки път, когато грешка е резултат от обработка на ред код, Delphi създава (повдига) обект, потомък от TObject, наречен обект изключение.

Пазени блокове

Приложение отговаря на изключение или чрез изпълнение на някакъв код за прекратяване, обработка на изключението, или и двете. Начинът за активиране на улавяне на грешки / изключения в даден код, изключението трябва да се случи в защитен блок от оператори. Общият код изглежда така:

instagram viewer
опитвам. {защитен блок от кодове} с изключение. на самото начало. {изключение блок-дръжки SomeException} край; край;

А опитайте / освен оператор изпълнява операторите в охранявания блок от код. Ако операторите се изпълняват без да бъдат повдигнати изключения, блокът с изключения се игнорира и контролът се предава на оператора след ключовата дума за край.

Пример:

... Нула: = 0; опитвам. манекен: = 10 / Нула; с изключение. на EZeroDivide направи. MessageDlg ('Не може да се раздели на нула!', MtError, [mbOK], 0); край;... 

Защита на ресурсите

Когато част от код придобие ресурс, често е необходимо да се гарантира, че ресурсът се освобождава отново (или може да получите a изтичане на паметта), независимо от това дали кодът завършва нормално или е прекъснат по изключение. В този случай синтаксисът използва накрая ключова дума и изглежда така:

{някакъв код за разпределяне на ресурси} опитвам. {защитен блок от кодове} най-накрая. {блок за прекратяване - код за безплатни ресурси} край;

Пример:

... AboutBox: = TAboutBox. Създаване (нула); опитвам. AboutBox. ShowModal; най-накрая. AboutBox. Освободете; край;... 

Приложение. OnException

Ако приложението ви не се справи с грешката, която е причинила изключението, тогава Delphi ще използва неговия манипулатор за изключения по подразбиране - просто ще изскочи кутия за съобщения. Можете да помислите за писане на код в събитието OnException за обект TApplication, за да уловите грешки на ниво приложение.

Пробив по изключения

Когато изграждате програма с обработка на изключения, може да не искате Delphi да прекъсва изключенията. Това е чудесна функция, ако искате Delphi да покаже къде е възникнало изключение; Въпреки това, може да бъде досадно, когато тествате собственото си боравене с изключения.

Малко заключителни думи

Идеята на тази статия е да ви даде бърз поглед върху това какви са изключенията. За допълнителна дискусия относно обработката на изключения, помислете Относно обработката на изключения в обработката на изключенията в Delphi, като използвате инструмент като Delphi Crash / Изключение Работа с отчитане на грешки и някои от следните свързани статии:

instagram story viewer