Når du nevner debugging, dette betyr at det kan være a bug i midten. Vel, jeg mener ikke en feil man kan finne i et hus - det jeg mener her er en programmeringsfeil!
Før vi går videre med denne opplæringen, la oss få noen vilkår ut av veien. La oss kort definere hva vi mener med a bug og debugging.
En feil i databehandling kan forekomme både i programvare og maskinvare, men vårt fokus er her på programvare. La meg raskt nevne en tro på hvor begrepet bug kan ha oppstått. Det antas at den første bruken av begrepet bug i databehandling var da a ekte bug (mot) ble funnet i en av reléene til Mark II-datamaskinen. Begrepet bug ble også brukt på slutten av 1800-tallet for å beskrive tekniske feil.
Feil i programvare forårsaker at programmet produserer utilsiktet oppførsel. Det er et begrep som vanligvis brukes til å referere til en feil med ukjent plassering og grunn, og de kan forårsake alvorlige problemer (dvs. krasj et program).
I denne situasjonen, debugging kommer inn i spill.
Vel, man kan si at den beste måten å unngå problemer er ikke å generere feil i utgangspunktet. Men dette er dessverre ganske sjeldent, og det er ikke lett å generere et rent program fra begynnelsen. Å ha feil er en vanlig situasjon du ville falle inn i.
debugging er prosessen med å finne, analysere og korrigere eventuelle feil (feil) du kan støte på. Det ultimate målet med feilsøking er å fjerne slike feil, og å produsere et program som går og oppfører seg som ment. Det er viktig å merke seg at det meste av tiden vil bli brukt på å finne feilen siden, som vi nevnte ovenfor, har den opprinnelig et ukjent sted.
For å få en ide om hvor vanskelig feilsøking kan være, se hva Brian W. Kernighan måtte si:
Alle vet at debugging er dobbelt så hard som å skrive et program i utgangspunktet. Så hvis du er så smart som du kan være når du skriver den, hvordan vil du noen gang feilsøke den?
en unntak er et objekt som indikerer at vi har en feil (feil). Med andre ord bruker Python unntak for å kommunisere at det er feil i programmet. Dette ville være lokalisering en del av feilsøkingsprosessen. Motta unntaksobjektet og utføre de nødvendige tiltakene for å håndtere feilen refererer til håndtering unntaket. Dette ville være analyserer og korrigere trinn i feilsøkingsprosessen.
Pythons prøve
setningen brukes til unntakshåndtering og har to former: prøve / unntatt
og prøve / endelig
. I det første tilfellet, den prøve
Klausulen kan følges av en eller flere unntatt
klausuler, mens det i sistnevnte tilfelle kun kan følges av bare en endelig
klausul.
De prøve / unntatt
syntaks er som følger:
prøv: # prøv blokkeringskode bortsett fra: # unntatt blokkkode
Kroppen til prøve
klausulen vil inneholde kode som kan generere et unntak, forutsatt at hvis et unntak ble generert, hoppes alle setningene i blokken over. På den annen side, kroppen av unntatt
klausulen kalles unntakshåndterer, som det er vant til å ta unntaket. De unntatt
blokkkode vil bare bli utført dersom et unntak er generert, ellers vil blokken bli hoppet over. Du kan bruke innebygde unntak som vist i Python Standard Library.
La oss ta et eksempel for å gjøre ting klarere. Si at vi ble bedt om å legge inn en nevner i en divisjon formel. Siden deling med null er ikke tillatt, la oss skrive en prøve / unntatt
setning som kontrollerer om det er en divisjon med null, og skriver ut en melding hvis denne feilen oppstod.
nomenklatur = input ('Oppgi en nevner verdi:') prøv: formula = 15 / denominator print 'Resultatet er' + str (formel) unntatt ZeroDivisionError: print 'Du forsøkte å dele med null som ikke er tillatt'
Hvis du skriver inn verdien 5
, for eksempel vil du få følgende utgang:
Resultatet er 3
Prøv nå å skrive inn verdien 0
som input. Hvilken utgang vil du få i dette tilfellet?
prøve / endelig
er en annen måte å skrive trykket på i Python. endelig
klausuler kalles opprydding / avslutning klausuler siden de alltid må løpes uavhengig av om et unntak oppstod i prøve
blokkere.
La oss prøve eksemplet i avsnittet ovenfor, men med endelig
klausul:
nomenklatur = inngang ('Oppgi en nevnerverdi:') prøv: formel = 15 / nevner utskrift 'Resultatet er' + str (formel) endelig: print 'Du forsøkte å dele med null som ikke er tillatt'
Legg merke til at når du skriver inn verdien 5
Som input, for eksempel, vil du få følgende utgang:
Resultatet er 3 Du forsøkte å dele med null som ikke er tillatt
De heve
Søkeord er en annen måte å håndtere unntak i Python. I dette tilfellet vil du kunne hente dine egne unntak - det er unntak som heves når et problem utenfor omfanget av forventede feil oppstår.
La oss se på et eksempel på å bruke heve
søkeord for å forstå konseptet mer.
prøv: x = input ('Skriv inn et tall i området 1-10:') hvis x<1 or x>10: heve eksepsjonell utskrift "flott! Du lyttet til meg og skrev inn et gyldig nummer 'bortsett fra: print' Ditt nummer synes å ligge utenfor rekkevidde 1-10 '
I dette eksemplet, hvis du skriver inn et nummer utenfor det tillatte området, skrive ut
uttalelse i unntatt
blokkering vil bli utført.
Fortsett, prøv noen verdier og sjekk utgangen.
Pythons spore tilbake
Modulen er en annen måte å håndtere unntak i Python. Det er i utgangspunktet brukt til å skrive ut stablingsspor av et program etter et unntak. De spore tilbake
inneholder feilmeldingen, nummeret på linjen som forårsaket feilen, og anropsstabel, det er sekvensen av funksjonsanropene som førte til feilen.
La oss ta et eksempel som genererer en spore tilbake
:
def createException (navn): raise Exception ('Det virker som' + navn + 'hevet et unntak') createException ('Abder')
Hvis du kjører dette skriptet, får du en utgang som ser ut som følger:
Traceback (siste samtale siste): File "test.py", linje 4, icreateException ('Abder') File "test.py", linje 2, i createException raise Exception ('Det virker som' + navn + 'hevet et unntak') Unntak: Det ser ut til at Abder har gitt et unntak
Legg merke til at feilen (feil) skjedde på linje 2
i createException
funksjon. Legg merke til at anropsstakken kan hjelpe oss med å spore hvilken samtale som førte til feilen, som i dette tilfellet er anropet som oppstod i linje 4
.
Opplæringen blir lengre, og jeg vil gjerne stoppe på dette punktet. Som du har sett, er feilsøkingsprogrammer virkelig en naturlig og vanlig ting å gjøre, og jeg tror at de typer feil du så i denne opplæringen, er kjent, ikke de?
Det finnes andre måter å feilsøke et Python-program på og håndtere unntak. En kjent måte, for eksempel, er hevdet uttalelse
.
Glad feilsøking!