Пищов за делфи - Изключения
| Информационни технологии | 2009-12-04 | 49 сваляния |
ИзключенияТе са особени ситуации които могат да възникнат по време на работа на една програма. Те се обработват от специални обработчици. По този начин се постига разделяне на логиката на нормално протичаща програма от логиката на възникналите грешни ситуации. Вс изклю е обект на някои клас. По принцип изкл може да бъде инстанция да какъв да е клас но се препоръчва клсовете за изкл да наследяват класа exception. Може да се създаде йерархия на класове за обработка на различни ситуации. При възникване на изкл нормалния ход на програмата се прекъсва и упревлението се предава на съотв обработчик. Изкл може да възникне и при изпълнение на някоя подпрогр която не реагира на него. В този случаи останалата част от подпорг не се изпълнява и се извършва незабавен възврат във викащата среда където се търси подходяща обработка на изкл. Обикновено изкл се създават от самата делфи среда. Ако програмистът използва sysutils unit всяка runtime грешка се преработва в изключния като по този начин се дава възможност за реакция на програмиста. | Изключения 2При изпълнение на операторите м-у try и except може да няма изкл. Тогава блока за обработка се предкача до end. Ако възнике изкл то: -ако блокът за обработка е последователност от оператори ,те се стартират за изпълнение -ако блока за обработка вкл няколко обработчици търси се обработчик чиито тип на изкл съвпада с типа на възникналото изкл или е негов родител. Управлението се прадава на първия срещнат аткъв обработ1ик като се изпълнява оператора след do. В on може да се дефинира само име и това е името на обекта изкл. Това име може да се използва в този оператор за адресиране на този обект. Сферата на действие на това име е само този оператор. Извен него името става невалидно. Ако не се намери подходящ обработчик on но е налична клаузата else нейните оператори се стартират. В определени случаи е необходимо да се изпълняват някакви действия винаги независимо дали има или не изкл. За целта трябва да се използва try-finally : | | |
| От друга страна програмиста сам може да предизвиква изкл ситуация като използва оператора Raise [<обект>] Ако обектът на изкл отсъства това означава че се генерира ново изкл за току що обработеното изкл. Тази ситуация се използва е случая когато обработчика на изкл изпълнява някаква дейност но програмистът смята че не е достатъчна. По тази причина изкл се изпълнява отново за да се прихване от самата система и да се обработи окончателно. Изкл се обработват в специални rty-except блокове: След края на обработката обектът свързан с изкл се унищожава автоматич. Блокът за обработка може да се осъществи от: -произволна последователност от оператори -последователност от обработчизи на изкл ежентуално последвана от else калуза. Самите обработчици имат вида: | Групата оператори 2 се изпълнява винаги независимо дали има изкл при изпълнение на оператори 1 с една малка особеност: Групата оператори 2 трябва да прихваща възможните изкл сама за себе си тъй като ако възнике изкл в групата оператори 1 последовано от изкл оператори 2 за обработка на по високо ниво се изппаща последното изкл а предходното се забравя. Ако при try except не се намри обработчик се минава едно ниво нагоре и т.н. | | |
Тагове от реферата: пищов, особени, възникна, ситии, програ, време











