Calc stiva de apel pentru o eroare (cu excepții)

Pentru a începe cu vom defini clasa de excepție urmărirea cu toate funcțiile sale membre:

Acum câteva cuvinte despre cum funcționează și cum zayuzat. În cazul unei situații de super-mega-fatale, vom genera o excepție de tipul nostru:

După această excepție va începe să cadă prin fiecare funcție în stiva de apel la main'a. Dar acest lucru nu este ceea ce avem nevoie. Aceasta a fost de fapt de urmărire este necesară pentru codul fiecărei caracteristici de program oferă un înveliș:

Acum, într-o listă legată _exinfo-> fi stocate indicii puncte de urmărire la numele tuturor funcțiilor implicate în lanțul de apel fatale. Rămâne doar pentru a prinde o excepție și va afișa un mesaj de eroare:

Pentru comoditate, puteți scrie câteva macro-uri:

Iată un exemplu:

În realizarea acestui program va afișa caseta de mesaj aici cu acest mesaj:

Avantajele acestei metode:
1) Viteza mai mare comparativ cu alte metode, deoarece urmărirea este activată numai atunci când apare o excepție. Nu puteți dezactiva în versiunea de lansare a programului.
2) Vă permite să obțineți un foarte util informații de depanare. puțin schimbându-și funcția inițierii inițiale de excepții, aveți posibilitatea să salvați un număr specific al liniei în codul care a apărut eroarea.
3) este suficient convenabil de a folosi, în cazul în care codul a fost inițial conceput pentru o urmă.
4) Nu aveți nevoie pentru a crea obiecte inutile.
dezavantaje:
1) Este dificil să se integreze într-un cod deja scris.
2) în conformitate cu excepțiile ANSI standard nu pot fi combinate cu excepțiile Win32 în cadrul unei singure funcții. Acest dezavantaj poate fi depășit complet de a merge la Win32-excludere. Astfel, adevărul complică foarte mult cod și este posibil să se reducă viteza (m-am încercat să fac acest lucru).
3) Unii programatori există un răspuns inadecvat la cuvântul „excepție“ :-).