Защо програмите се сриват

Защо програмите се сриват
Защо програмите се сриват

Видео: Защо програмите се сриват

Видео: Защо програмите се сриват
Видео: Почему я впустила его в свою жизнь? Отношения с манипулятором. Анна Богинская 2024, Ноември
Anonim

Разнообразието от задачи, решавани днес с помощта на персонални компютри, се осигурява от съществуването на огромен набор от приложни програми. Удобството при работа със софтуера до голяма степен зависи от неговата надеждност, която се изразява в отсъствието на аварийни ситуации. Много програми обаче се сриват в най-неподходящия момент. Защо?

Защо
Защо

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

Независимо от типа, изключението може да бъде уловено и обработено правилно. Неуловените изключения отиват в манипулатора на основната библиотека за изпълнение или операционната система, инсталиран манипулатор. Ако това се случи, програмата се срива със съобщение или ненормален прозорец за прекратяване (в Windows). Ако манипулаторът на операционната система не е работил (например е бил умишлено премахнат), програмата „тихо се срива“. По този начин програмите се сриват поради изключения, които не могат да бъдат обработени. Причините за възникването на изключения са различни.

В преобладаващото мнозинство от случаите програмите се сриват поради изпълнението на собствен код, съдържащ явни или неявни грешки при изпълнението. Списъкът с възможните причини за извънредни ситуации е много дълъг. Това са както класически грешки при операции с числа с плаваща запетая (например разделяне на 0), така и грешки при работа с памет (четене или записване извън адресното пространство на процеса, достъп до защитени страници, записване в зона само за четене), препълващ стек поради безкрайна рекурсия и др. В тези случаи се изхвърлят хардуерни изключения или изключения на операционната система.

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

Грешки при изпълнението могат да бъдат намерени и във външни компоненти, използвани от приложението. Например в динамични библиотеки, които осигуряват необходимата функционалност или допълнителни модули. Програмен код, който е имплицитно зареден в адресното пространство на даден процес (например, за да прихване определени API функции) също може да доведе до срив на програмата.

Много компоненти и библиотеки (например ADO за Windows) използват механизма за програмно изключение като приоритет за докладване на грешки. Липсата или непълната обработка на изключения от този вид приложение може да доведе до срив дори в напълно безвредни ситуации (като загуба на връзка с базата данни).

Препоръчано: