Блог gunsmoker-а обробка помилок - терміни та визначення

Memory leak-см. Витік памяті .

Nested exception - см. Приліплене виняток.

Resource leak - см. Витік ресурсу.

Software exception - см. Програмне виключення.

Unhandled exception - см. Необроблене виняток.

Unit (Модуль) - .pas файл в Delphi.

Апаратне виняток - (див. Також: Виключення) це Виняток. яке порушується залізом комп'ютера. Цей тип Винятків є асинхронним - ці Винятки можуть виникати в будь-якому місці і в будь-який час. Добре відоме виключення Access violation (EAccessViolation) є прикладом апаратного виключення. У Delphi все Апаратні виключення є спадкоємцями EExternalException.

Баг - (див. Також: Помилка) це дефект в програмі. Це загальний термін, який використовується для опису помилки, нестачі, збою або проблеми в програмі або системі, які призводять до неправильного або несподіваного результату, або призводять до непередбачених поведінки. Більшість Багов виникає з помилок і друкарських помилок, допущеними людьми в коді програми або її дизайні, але деякі з них викликані компілятором. Програма, яка містить велику кількість багів. і / або Багов. які серйозно заважають її функціональності, називається "бажной". Докладні звіти про проблеми в програмі, як правило, називаються Bug reports (Баг звітами), fault reports, problem reports, trouble reports, change requests і так далі. Багато людей плутають Баги з Винятками і навпаки, але це, очевидно, неправильно, так як Витік - це теж Баг. І далеко не всі Винятки є реальними багами в коді (наприклад, Виняток порушену при неможливості відкриття файлу, як правило, багом не є).

Баг-звіт - (див. Також: Необроблене виняток) це звіт про можливе Баге в додатку. Він зазвичай містить інформацію про виключення або витоку. Баг звіт зазвичай включає в себе один або кілька стека викликів і деяку інформацію про систему, додатку та робочому оточенні. Баг звіти зберігаються в файлах. Часто один файл може зберігати більше одного Баг звіту.

Взаємне блокування - ситуація, коли два або більше потоків нескінченно чекають один одного. Такі ситуции є багами в додатку. Це окремий випадок Зависання.

Вкладене виняток - Виняток. виникло під час роботи (всередині) обробника виключення. Зазвичай називається таким, тільки якщо між двома винятками збережена зв'язок.

Впровадження - може мати різні значення. Зазвичай цей термін або посилається на Установку хука. або на процес додавання налагоджування в Виконуваний модуль.

Звісно - це ситуація, коли додаток перестає реагувати (відповідати) на зовнішні подразники на кшталт призначеного для користувача введення або IPC-взаємодій. Це може бути Баг в додатку, але не завжди. Якщо цей стан тривати нескінченно, то це - однозначний Баг. Окремим випадком Зависання є Взаємне блокування.

Виняток - це спосіб перервати звичайне виконання програми і виконати деякий код з обробки виникла позаштатної ситуації (виключення). У деяких джерелах Винятки називають "особливими ситуаціями", "позаштатними ситуаціями" або "винятковими ситуаціями", але термін "Виключення" все ж більш усталений. Виняток можна розглядати як деяка подія, яке перериває нормальне виконання програми. Хоча спочатку Винятки введені для обробки позаштатних (помилкових) ситуацій, але вони також є і зручним засобом переривання нормального виконання коду (наприклад - натискання користувачем кнопки "Скасувати"). Також Винятки дозволяють здійснювати однакову обробку як програмних, так і апаратних помилок. Обробка передбачає написання коду "очищення" і / або коду по виправленню помилки. Крім того, Винятком також називають інформаційний об'єкт, що описує таке переривання роботи. Процес виникнення Винятки зазвичай називають "порушенням виключення" або "викидом виключення" ( "raising exception" або "throwing exception"). Винятки бувають Обробленими або Необробленими. Також Винятки діляться на Апаратні або Програмні.

Виконуваний модуль - кажучи коротко, це .exe. dll або .bpl файл. Загалом, це ваш скомпільований проект. Це файл, який містить виконуваний код і який може бути завантажений для виконання коду.

Виконуваний файл - см. Виконуваний модуль.

Мертва блокування - див. Взаємне блокування.

Модуль - має два значення. Це або Виконавчий модуль. або Unit. Про що йде мова, зазвичай потрібно розуміти з контексту.

Необроблене виняток - (див. Також: Виключення) може мати кілька різних значень. Зазвичай під необроблений винятком розуміється будь-який Виняток. яке не є обробити винятком. Тобто Виняток спливло у всьому ланцюжку обробників і не було ніким оброблено - аж до кореневого обробника від ОС. Такі Винятки означають негайну смерть ( "виліт") вашого застосування - якщо тільки на цю ситуацію не встановлено Хук. Отже, це звичайне значення слів "Необроблене виключення" в стандартних додатках. Однак, коли в додатку використовується Трейсер винятків. Необроблене виняток отримує другий сенс - тепер воно зазвичай означає Виняток. яка не обробляється вашими обробника виключення. але ловиться трейсерів винятків (або його обробника виключення. або його хукамі). Навіть хоча технічно це Виняток є обробити винятком - його називають необроблених винятком. щоб підкреслити його відмінність від інших Винятків. У цьому випадку, щоб вказати вихідний сенс необроблені виключення. зазвичай говорять "настоящееНеобработанное виняток". Як можна здогадатися, такий випадок - досить рідкісний в додатку з трейсерів винятків. Крім того, іноді Необроблене виключення в його другому значенні вживають і в разі звичайних додатків Delphi (без трейсерів винятків), маючи на увазі будь-який виняток, що досягає глобального обробника виключення в об'єкті Application.

Оброблене виняток - (див. Також: Виключення) це Виняток. яке було оброблено обробника виключення в процесі Обробки виключення.

Обробка виключення - (див. Також: Виключення) зазвичай під цим розуміється процес обробки виключення, який може включати в себе такі операції як логгінг (див. Баг звіт), показ повідомлення про помилку, відкат операцій і так далі. Цей процес виконується одним або декількома (в разі перезбудження) обробника виключення. Об'єкт Винятки знищується після завершення Обробки виключення. Див. Також Оброблене виняток і Необроблене виняток.

Оброблювач виключення - (див. Також: Виключення) це код, який отримує управління при порушенні Винятки. Зазвичай він не є Хуком. Оброблювач виключення або виконує очистку (try-finally) або Обробку виключення (try-except).

Звіт про помилку - см. Баг-звіт.

Помилка - (див. Також: Виключення) см. Баг. Багато людей плутають Винятки з помилками і навпаки, але це, очевидно, неправильно, так як Витік - це теж Баг. І далеко не всі Винятки є реальними помилками в коді (наприклад, Виняток. Порушену при неможливості відкриття файлу, як правило, Помилкою не є). Втім, іноді Помилка може бути використано як синонім до слова Виняток. а не до слова Баг. Тому зазвичай краще уникати слова Помилка як багатозначного. Переважно використовувати слова Виняток. Витік. Баг. друкарська помилка. Особливо це помітно в словосполученні "виникає помилка". Помилка в коді програми не може "виникати" або "не виникати". Вона там або є, або її там немає (за умови незмінності коду програми). Правильніше говорити: "з'являється повідомлення", "виводить невірний результат", "відбувається відмова в доступі" або ще якось.

Програмне виключення - (див. Також: Виключення) це виключенням. порушену за командою програмного коду. Такі Винятки є синхронними - вони виникають тільки в певних місцях і в певний час - а саме: коли код програми командує порушити Виняток. Прикладом Програмного виключення може служити, скажімо, EStreamError. Це найпоширеніший тип Винятків в додатках.

Трейсер винятків - (див. Також: Виключення) це утиліта або код, який встановлює хукі і перехоплює збудження Винятків. дозволяючи створити Баг звіт по необробленої винятків. Часто Трейсери винятків мають додаткову функціональність, на кшталт збору інформації, налагоджувальних можливостей, лову Витоків і так далі. Відомими трейсерів винятків під Delphi є EurekaLog і madExcept. JCL (JclDebug.pas + JclHookExcept.pas) часто використовуються для побудови власного трейсерів винятків.

Установка хука - (див. Також: Хук) процес установки Хука. Іноді називається Injecting (Впровадженням), особливо коли підкреслюється недокументірованность перехоплення коду.

Витік пам'яті - (див. Також: Витік) це тип Витоку. коли додаток виділяє, але не звільняє пам'ять.

Витік ресурсу - (див. Також: Витік) будь-яка витік. яка не є Витоком пам'яті.

Витік - це вид Бага в додатку. Він відбувається, коли додаток споживає якийсь ресурс, але не звільняє його. Якщо цей ресурс є пам'яттю (зазвичай: віртуальної), то Витік називається Витоком пам'яті.

Хук - це код, який викликається замість або перед іншим кодом - на який "поставлений хук". Окремим випадком Хука є звичайний обробник події. Зазвичай, якщо є документований стандартний спосіб установки зателефонувати на свою коду на будь-яку подію, то цей код називається обробником події. Якщо ж такого способу немає, то код називається Хуком.