Interpretuokite „Traceback“:
Peržiūrėję kai kuriuos atsekamus duomenis, galite geriau suprasti jų teikiamas žinias, kad galėtumėte ką nors iš jų gauti. Pažvelkime į tai, kaip pagrindinė išimtis gali būti atsekama. Čia pateikiamas paprasto kodo, generuojančio traceback klaidą vykdant „Spyder“, pavyzdys („Python 3“).
Žemiau yra klaidos atsekamumo vaizdas. Pirmoje eilutėje nurodoma failo vieta. Čia pateikiamos kelios visų linijų, kuriose naudojamos spalvos, specifikacijos.
Balta: „Traceback“ (paskutinis paskutinis skambutis) yra „traceback“ sakinys. Kita vertus, paskutinėje baltoje eilutėje yra susijusi klaidos informacija.
Žalias: Sakant failo pavadinimą ir vietą, įvyko klaida.
Mėlyna: Rodo failo, kuriame įvyko klaida, eilutės numerį.
Geltona: Tai rodo tikrąją eilutę, kurioje atsirado išimtis.
Raudona: Klaidos tipas.
Štai kelios svarbios klaidų paieškos klaidos:
PavadinimasKlaida
„IndexError“
„KeyError“
TypeError
valueError
ImportError / ModuleNotFound
Pavadinimo klaida:
Kai norite interpretuoti kode nenurodytą kintamąjį, pasirodo NameError. Čia yra paprastas „NameError“ atsekamumo pavyzdys. Mes turime kintamąjį „skaičius“ apibrėžta tam tikra verte, o spausdinti pareiškimą, atspausdinome „nutirpęs“, kuris nėra apibrėžtas niekur kode. Paleiskime šį kodą ir patikrinkime, kas vyksta.
Matote, kad įvyko „NameError“ atsekimas, nes mes neapibrėžėme kintamojo „numb“, taigi kaip jį atsispausdinti. Štai kodėl ši programa rodo „NameError“ ir ją papildo papildoma informacija paskutinėje eilutėje su baltu ir raudonu tekstu. Geltonas tekstas rodo tikslų kodą, kur įvyko klaida.
Rodyklės klaida:
„IndexError“ sukuriama, kai kode yra apibrėžta nepasiekiama serija. Mes apibrėžėme a sąrašą pavadintas „naujas“ turintys 5 indeksai su kai kuriomis vertybėmis. Po to mes turime nurodyti spausdinimo komandą, kad išvestumėte reikšmę indeksas numeris 9.
Kai vykdysime šį kodą, jis generuos „IndexError“, apibrėžiantį indeksą už diapazono ribų. Kadangi mes nustatėme 5 indeksų sąrašą, atspausdinto indekso numerio, kuris yra 9, negalima pasiekti, nes jis nėra mūsų diapazone.
Pagrindinė klaida:
„Python“ sugeneruoja pagrindinę klaidą, kai bandote pasiekti Raktas kuris yra neapibrėžtas arba žemėlapiai, ypač iš a žodynas. Tai labiau panašu į „IndexError“. Taigi, pažvelkime į paprastą žodyno, pavadinto, pavyzdį „atsitiktinis“ su dviem joje apibrėžtais klavišais, priskyrus kai kurias šiems raktams reikšmes. Kitoje eilutėje išspausdinome raktą, pavadintą „A“ atspausdintame pareiškime.
Oi! Mes turime atsekamą raktą „KeyError“. Taip yra dėl to, kad spausdinimo ataskaitoje pateiktas neteisingas raktas, kuris nėra apibrėžtas žodyne. Galima suklysti pateikiant didžiosios raidės raktą, o žodyne yra apibrėžtas mažos raidės raktas.
Tipo klaida:
„TypeError“ apibrėžiama kaip išimtis, atsirandanti tada, kai tam tikra operacija ar metodas buvo išteptas netinkamas tipas subjekto ar kintamojo. Turime paprasto kintamojo, kuris ima dvi reikšmes, pavyzdį, kai ši eilutė prideda abi reikšmes. Pirmoji reikšmė yra eilutės tipas, o kita yra sveiko skaičiaus tipas. Spausdinimo ataskaita spausdina pridėjimo rezultatą.
Kai atliekamas šis kodas, jis išimtis. Ši išimtis yra susijusi su netinkamu objekto tipu. Tai aiškina, kad negalima pridėti eilutės tipo kintamojo su sveiko skaičiaus kintamuoju.
Reikšmės klaida:
Reikšmė Klaida apibrėžiama kaip išimtis, kuri įvyksta tik kai kuri įmontuotas metodas paima tinkamo tipo argumentas bet neteisinga vertė jame. Pažvelkime į nedidelį pavyzdį. Mes naudojame integruotą metodą int () su tam tikra eilutės reikšme spausdintame sakinyje.
Kai vykdote šį vienos eilutės kodą, jis sugeneruos „ValueError“, nes mes naudojame funkciją „sveikas skaičius“, tuo pačiu suteikdami jai eilutės reikšmę, kurią reikia vykdyti. Štai kodėl jis parodys, kad funkcija int () turi neteisingą vertę.
Kita vertus, jei suteiksite jai trupmeninę vertę, ji pavers ją sveikojo skaičiaus verte.
Šis kodas išleidžia 11, nes jis užima tik sveiką skaičių dalį, o dešimtainė dalis visiškai ignoruojama.
Importavimo klaida / modulis nerastas:
Kartais reikia importas kai kurie paketai arba moduliai savo pitono kode, kad per juos galėtumėte naudoti specialias funkcijas. „ImportError“ atsekamumą rasite, kai kode yra šiek tiek klaidingas teiginys „Importas“. Ši atsekamumo klaida įvyksta, kai esate negali į rasti konkretus modulis ar kažkas iš pakuotės. Čia mes importavome du modulius, „pip“ ir „java“, mūsų kode.
Vykdydami šį kodą, „ModuleNotFoundError“ atsiliks. Taip yra todėl, kad „Python“ biblioteka nepalaiko importuoto modulio „java“. Kita vertus, jis nesuteikia išimties importuojant „pip“ modulį, nes tai yra „Python“ palaikomas modulis.
Išvada:
„Python“ atsekamumas suteikia puikių žinių, kurios padės išsiaiškinti, kas kode vyksta neteisingai. Nesvarbu, ar tai darote pirmą kartą, ar tiesiog nesuprantate, ką tai daro, „traceback“ karta gali būti šiek tiek bauginanti. Norint tapti stipresniu „Python“ programuotoju, svarbu sužinoti, kokią informaciją pateikia „Python“ atsekamumas.