Урок за C #, Код за отстраняване на грешки

В C #, както и в други езици преди .NET, основната техника за отстраняване на грешки е добавяне на точки за прекъсване и изследване на това, което се случва в кода в определени точки по време на неговото изпълнение.

Точки на прекъсване

Ако прекъсването на определен ред не работи добре за вашия проблем всеки път, можете да създадете така наречената условна точка на прекъсване. За да направите това, изберете Windows --- Точки на прекъсване от менюто за отстраняване на грешки. Ще се отвори диалогов прозорец, който ви позволява да посочите желаните подробности за точката на прекъсване. В този прозорец можете да направите следното:

Посочете, че изпълнението трябва да се прекъсва само след преминаване на точка на прекъсване определен брой пъти.

Посочете, че точката на прекъсване трябва да влезе в сила на всеки n-ти ред, достигайки например всяко изпълнение на 20-ти ред (това е полезно при отстраняване на грешки в големи цикли).

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

Разделът Autos ви позволява да видите стойностите на последните няколко променливи, които са били достъпни по време на изпълнението на програмата.

Разделът Locals ви позволява да видите стойностите на променливите, до които се осъществява достъп в текущия изпълняващ метод

Разделът Watch ви позволява да видите стойностите на всички променливи, които представляват интерес, като изрично посочите имената им директно в прозореца Watch.

Изключения

Изключенията са чудесен начин да осигурите правилно обработване на грешки в предоставеното приложение. Когато се използват правилно, те осигуряват увереност, че приложението ще може да се справи с предизвикателството и потребителят никога няма да види диалогов прозорец с техническо описание на проблема. За съжаление при отстраняване на грешки изключенията не са толкова големи. Има две причини за това:

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

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