Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
1. Manipulácia s výnimkou (väčšina jazykov):
Väčšina moderných jazykov má mechanizmy manipulácie s výnimkou. Hlavnou myšlienkou je zachytiť výnimky a extrahovať informácie o tom, kde vznikli. To často zahŕňa názov súboru a číslo riadku.
* python:
`` `Python
Import Traceback
skúsiť:
# Nejaký kód, ktorý by mohol zvýšiť výnimku
Výsledok =10/0
Okrem výnimky ako e:
TraceBack.print_exc () # Vytlačí úplnú TraceBack, vrátane názvu súboru a čísla riadkov
`` `
`Traceback.print_exc ()` je tu rozhodujúci. Jednoduchá `tlač (e)` môže zobraziť iba typ a správu výnimky, nie umiestnenie.
* java:
`` `Java
skús {
// nejaký kód, ktorý by mohol zvýšiť výnimku
int výsledok =10/0;
} catch (aritmeticexception e) {
e.printStackTrace (); // Vytlačí sledovanie zásobníka s názvom súboru a čísla riadku
}
`` `
`E.PrintStackTrace ()` poskytuje podobnú funkčnosť ako Pythonov `TraceBack.print_exc ()`.
* c ++:
C ++ nemá vstavanú výnimku, ktorá sa zaoberá tak elegantnou ako Python alebo Java. Na získanie podrobných informácií o sledovaní sledovania stohu budete musieť použiť nástroje ladenia alebo knižnice ako `libunwind`. Je to zložitejšie a často si vyžaduje príznaky kompilátora a linkerov, aby umožnili symboly ladenia. Základné spracovanie chýb môže zahŕňať iba protokolu chyby pomocou `Perror`, ktorá neposkytuje informácie o názve súboru.
* javascript (node.js):
`` `JavaScript
skús {
// nejaký kód, ktorý by mohol vyhodiť chybu
Nechajte výsledok =10/0;
} catch (chyba) {
Console.Error (error.stack); // Vytlačí sledovanie zásobníka vrátane názvu súboru a čísla riadku
}
`` `
2. Smernice pre procesor (C/C ++):
V C a C ++ môžete použiť preprocesor na vloženie názvu súboru do vášho kódu:
`` C ++
#include
#define File_name __file__
int main () {
skús {
int výsledok =10/0;
} catch (const std ::výnimka &e) {
std ::cerr <<"Chyba v súbore:" <
}
návrat 0;
}
`` `
`__File__` je predprocesorové makro, ktoré sa rozširuje na meno aktuálneho súboru. Toto je menej prepracované ako sledovanie stohu výnimky, pretože dáva iba názov názvu okamžitého chybového umiestnenia, nie reťaz funkcií volaní, ktoré k nemu vedú.
3. Knižnice protokolovania:
Mnoho knižníc protokolovania (napríklad `protokol 'v Python alebo` log4j` v Java) automaticky obsahuje informácie o súboru a riadku do svojich denných správ. Toto je dobrý prístup k sledovaniu chýb počas vykonávania programu, aj keď v každom potenciálnom chybovom bode nevyriešite výnimky.
4. Debuggers:
Debuggers (ako GDB pre C/C ++, PDB pre Python) sú neoceniteľné na nájdenie chýb. Poskytujú podrobné informácie o stave vykonávania v bode zlyhania, vrátane názvu súboru a čísla riadku.
Dôležité úvahy:
* Debug zostavuje: Pre mnoho jazykov sú potrebné možnosti kompilátora, aby sa umožnili informácie o ladení (napr. `-G` vlajka v GCC). Tieto informácie sú rozhodujúce pre stopy zásobníkov a funkčnosť ladenia. Vydanie zostavuje často tieto informácie o ladení, aby sa znížila spustiteľná veľkosť.
* stratégia manipulácie s chybami: Rozhodnite sa, či budete spracovať chyby lokálne (pomocou `skúste ... okrem`/` skúste ... Catch`) alebo centrálne (pomocou protokolovania). Hybridný prístup je často najlepší.
* Clarity: Vyvarujte sa všeobecných chybových správ. Poskytnite kontext vždy, keď je to možné (napr. „Chyba čítanie súboru 'data.txt'“).
Nezabudnite zvoliť metódu, ktorá najlepšie vyhovuje vášmu jazyku, zložitosti vašej aplikácie a stratégie spracovania chýb. Výnimočná manipulácia spárovaná so systémom protokolovania zvyčajne ponúka robustné riešenie.