Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako je možné urobiť program na vytlačenie názvu zdrojového súboru, kde sa vyskytne chyba?

Metóda tlačenia názvu zdrojového súboru, kde sa vyskytuje chyba, do značnej miery závisí od programovacieho jazyka a typu chyby. Tu je rozpis prístupov k niekoľkým bežným scenárom:

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:" < // ... podrobnejšie spracovanie chýb ...

}

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.

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené