Bentornata in questa lezione, discuteremo di errori e gli errori di gestione delle eccezioni si
verificheranno nel codice.
Nessuno è perfetto e gli errori sorgeranno sicuramente soprattutto quando qualcun altro finisce per
usare il tuo codice in modo inaspettato.
Possiamo utilizzare la gestione degli errori nel tentativo di pianificare possibili errori che potrebbero verificarsi nel nostro
codice in futuro.
effettivamente nel file quando in realtà è stato aperto solo con la modalità per la lettura correntemente se c'è qualche tipo
di errore nei nostri programmi, l'intero script si fermerà e torneremo indietro in una sorta di errore.
Ad esempio, in alcune parti del codice, si tenta di aprire il file, quindi in seguito qualcun altro
sta utilizzando il proprio codice e l'utente potrebbe provare a scrivere
Possiamo effettivamente utilizzare la gestione degli errori per consentire allo script di continuare se l'altro codice e segnalare l'errore.
Quindi, anche se c'è un errore, il codice segnalerà l'errore e continuerà.
Ora ci sono tre parole chiave per questo processo di gestione delle eccezioni.
Ed è il tentativo tranne
E infine le parole chiave e queste avranno tutte un blocco di codice associato.
codice try è il blocco di codice che verrà tentato e questo può o non può portare a un errore.
Quindi sotto il blocco di
Quindi, una volta provato il blocco di codice di prova effettivo se c'è un errore, si ha il blocco di accettazione e questo è un
codice di blocco che verrà eseguito nel caso ci sia qualche errore all'interno di quel blocco di prova.
Quindi hai un blocco di codice finale che è un blocco finale di codice che viene sempre
eseguito indipendentemente dal verificarsi di un'eccezione o di un errore.
Andiamo al notebook e vediamo alcuni esempi su come utilizzare questi blocchi.
OK.
Iniziamo effettivamente visualizzando un esempio di un errore che potrebbe verificarsi.
Immaginiamo di avere una funzione molto semplice che alcuni aggiungono funzione e uno e due e poi quello che fa,
stampa solo la somma di loro e uno più due potresti non pensare a nessun problema
qui.
Devo solo aggiungere 10 e 20 e tornare indietro 30.
Ma immaginiamo di avere la seguente situazione.
Hai qualche numero variabile.
Hai impostato uguale a 10.
ottenere il secondo numero lo chiedi come input e diciamo che il numero due è uguale all'input di.
Poi hai un mucchio di codice e in seguito per
Per favore.
Fornire un numero.
Quindi ci chiede di fornire un numero.
Diciamo 20 e poi quello che finiamo è che diciamo bene fammi richiamare di nuovo la funzione al numero 1 e
al numero due.
Spero che tu ti renda conto che questo ti darà già un errore, perché la notifica ricorda che
quando chiami la funzione di input 20 qui è effettivamente una stringa.
Quindi, quando eseguo questo, dice che hai un errore di tipo.
Quindi notate qui che esiste un'eccezione specifica effettiva che Python sta cercando di
dirvi sull'errore di tipo e che dice tipo di operazione non supportata come quattro più intero e stringa.
Quindi, in pratica, ti sto dicendo che non posso aggiungere un intero e una stringa insieme. Posso aggiungere due interi
insieme oppure posso concatenare due stringhe insieme, ma non posso lavorare con entrambi questi tipi di dati.
E questo è un esempio del tipo di errore che potresti ottenere durante l'esecuzione del codice.
E sfortunatamente diciamo che volevo avere una dichiarazione di stampa.
Quindi diciamo che è successo qualcosa.
E io eseguo questa affermazione di stampa in realtà non succederà mai.
Quello che succederà è che ottengo un errore.
E questa è la fine della mia sceneggiatura.
Non importa se ho centinaia di linee che superano questo blocco di codice.
Continuerò a ricevere questo errore di tipo e nient'altro dopo che verrà eseguito.
L'idea alla base delle dichiarazioni di prova e accettazione e infine è che, anche se dovesse
accadere, tenteremo di fare quel blocco di codice.
E anche se c'è un errore, possiamo continuare con un altro codice.
Quindi, come lo faremo davvero.
Bene, dobbiamo cercare la parola chiave colon.
E poi abbiamo il blocco del codice.
Quindi questo è il codice che vuoi provare.
Quindi vuoi provare questo codice, ma potrebbe avere un errore.
Quindi qui ho intenzione di dire che il risultato è uguale a 10 più 10 whoops fa.
Quindi sappiamo che questo non produrrà effettivamente un errore.
E poi quello che farò qui è che avrò il mio blocco eccetto il codice.
Quindi il mio blocco di codice tranne è quello che voglio che accada se c'è un errore e questo è molto comune.
Quando crei librerie più grandi che altre persone stanno per usare, puoi avere
un blocco eccetto così puoi stampare un messaggio più specifico per l'utente.
Quindi forse puoi dire hey sembra che tu non stia aggiungendo correttamente.
Quindi ho intenzione di eseguire questo e questo.
In realtà non induciamo aria.
Invece posso chiamare i risultati qui senza problemi come 20, il che ha senso perché Templeton non ha problemi.
Ora creiamo effettivamente quell'aria.
Ho intenzione di provare ad aggiungere il numero intero 10 alla stringa 10 qui.
Ora quando eseguo questo comando, dice che sembra che tu non stia aggiungendo correttamente.
Ora nota cosa è successo qui.
Il resto del blocco di codice era ancora in grado di eseguire con la dichiarazione di accettazione il mio intero
programma non era stato chiuso solo perché avevo qualche tipo di errore come prima.
Invece ho provato questo blocco di codice e poi ho detto eccetto e in generale qui posso dire tranne che
se c'è qualche tipo di errore fai questo codice proprio qui.
Ora immaginiamo che voglio un blocco di codice da eseguire se non ci sono eccezioni.
Potrei fare qualcosa di simile.
Posso dire.
I risultati di Else Prince e soprattutto posso dire che Prince ad è andato bene.
Quindi, ora che eseguo questo comando, dico solo che sembra che tu non stia codificando correttamente.
Quindi questo è noto come una prova.
Tranne.
Altra affermazione.
E quello che abbiamo qui è il blocco di codice che proveremo.
E poi abbiamo due opzioni.
Se c'è un errore in quel blocco try, eseguiamo il codice tranne else.
Se non ci sono errori, eseguiamo questo.
Altro codice.
Quindi sistemiamo questo e non produciamo più un errore.
Noi gestiamo questo.
Proviamo questo blocco di codice da quando ha avuto successo.
Non lo eseguiamo eccetto il blocco di codice.
Invece passiamo direttamente ad altro e diciamo che l'annuncio è andato bene e ne abbiamo 20.
OK.
Dunque proviamo.
Tranne.
Altrimenti ora possiamo usare la parola chiave finalmente per avere un blocco di codice.
Sempre in esecuzione.
Indipendentemente se c'è un errore.
Quindi lo spettacolo che sto andando a costruire su un esempio in cui proviamo effettivamente a scrivere alcuni file.
Quindi esploriamo questo concetto di prova tranne.
Infine, lavorando su un nuovo esempio, in questo esempio cercheremo di aprire un file, quindi avremo un
file di test e inizieremo aprendolo in modalità W.
Questa è la modalità giusta che ci permette di aprire il file e scrivere su di esso o
creare il file se non esiste già.
E poi dirò F proprio così e scriverò una riga di test su questo file e poi dirò eccetto e
qui posso dire tranne i due punti e ciò accadrà a eccezione di eventuali errori.
molti tipi di errori che posso specificamente ad eccezione, ad esempio, posso provare solo ad eccezione di questo errore di tipo.
Ma in realtà ci sono
Quindi quello che succede è notevole.
Abbiamo avuto questo errore di tipo specifico.
Quello che potrei fare è dire hey solo se c'è un errore di tipo stampato.
Si è verificato un errore di tipo.
Quindi potrei provare un altro errore che è in realtà associato con l'apertura e la scrittura di file.
E se vai alla documentazione puoi arrivare ad errori ed eccezioni e questo spiega gli errori di sintassi
e le eccezioni in generale.
Ma noterete che c'è un link qui è un built-in eccezioni che salta alla Sezione 5 qui della
documentazione e questo è in realtà un elenco di tutti i diversi tipi di eccezioni ed errori
che possono accadere.
Quindi se continui a chiamare c'è un errore di asserzione e gli errori di errore degli errori di importazione dei
file.
Alcuni di questi che potresti aver visto prima di molti di quelli che non abbiamo visto, sono errori di ricorsività degli errori del sistema
operativo che superano tutti i diversi tipi di errori.
Puoi provare in particolare a prendere.
Nel nostro caso, quindi, l'errore che si verificherà durante l'apertura e la scrittura su file a cui non
si dispone delle autorizzazioni è un sistema operativo.
Err.
E stiamo andando a stampare paga hai un SO di sistema puoi anche dire che possiedo l'aria a seconda della versione
di Python che hai e poi aggiungeremo un blocco finally e questo blocco alla fine eseguirà
sempre no importa cosa
Quindi, dire che corro sempre a correre questo ora e in questo momento torniamo indietro.
Corro sempre.
Quindi, cosa sta realmente accadendo qui.
Bene apriamo il file di test che chiamiamo direttamente su di esso in modo che tutto funzioni significato Non ho questo eccetto il blocco in
esecuzione e non ho questo eccetto il blocco in esecuzione.
Allora, dico solo che finalmente stampo.
Corro sempre.
Ora è in realtà indurre un errore aprendolo con il nostro Quindi è permesso solo leggere.
Quindi dovremmo ottenere un errore su questa linea quando proviamo a scrivere sul file.
Ora non dovremmo ottenere un errore di tipo perché non è in realtà l'errore che stiamo ottenendo.
Invece dovremmo ottenere un errore del sistema operativo perché questo è l'errore relativo al tentativo di scrivere su un file per
il quale si hanno solo autorizzazioni di lettura.
Quindi se eseguo questo ritorno.
Ehi, hai un errore del sistema operativo.
E a differenza dell'ultima volta in cui abbiamo avuto questo, tranne il resto, siamo solo in uno di questi blocchi che
verrà eseguito con l'istruzione finally che il blocco eccetto verrà eseguito e quindi il blocco finale verrà eseguito.
avere cose specifiche che la stampa di errori specifici dovresti fare è dire che hai un errore di tipo
qui e non hai voluto memorizzare tutti gli altri tipi se hai appena detto eccetto alla fine di questo.
E questo è il modo in cui puoi allineare un gruppo di eccezioni per
Questa sarà tutte le altre eccezioni.
Quindi tutte le altre eccezioni e ogni corsa di nuovo.
E dice tutte le altre eccezioni perché non ha rilevato l'errore di tipo o altri errori
che abbiamo definito.
Quindi se dici solo i due punti, dovrai stampare quell'errore.
OK.
tutti i tipi di errore e molto probabilmente i tuoi blocchi di codice assomiglieranno a questo.
Quindi, tieni a mente mentre stai iniziando in Python, probabilmente non memorizzerai
Provare.
Tranne.
E infine.
Quindi, solo per reiterare il blocco try del codice è il blocco di codice che tenterai di
tentare, tranne che il blocco del codice si verificherà quando c'è un errore nella tua istruzione try.
E poi hai la possibilità di mettere un blocco finally qui che verrà sempre eseguito indipendentemente dal fatto che ci
sia un errore o che tu possa avere un codice di blocco ELSE che va solo a X-2 quando non c'è un errore.
OK, concentriamoci su questa nuova ora qui.
Al momento non c'è nessun errore, perché diranno che saranno lì.
Se corro questo, torno.
Corro sempre.
Quindi non ci sono errori.
Finalmente il blocco funziona ancora.
Induciamo un errore
Diciamo tutte le altre eccezioni perché sto solo dicendo e generalmente eccetto che qui fa qualunque cosa.
Questo blocco di codice dice finalmente che fa questo blocco di codice.
Quindi questo blocco alla fine, indipendentemente dal fatto che ci sia un errore, è sempre in esecuzione.
Quindi finiamo la nostra discussione qui mostrandoti come usare i trucchi che finalmente bloccano all'interno di una
funzione che cerca di ottenere un tipo specifico di input da un utente.
Quindi faremo qui è il seguente.
Diremo DPF chiedere per me. Quindi, cosa fa questa funzione, tenterà di chiedere all'utente un numero intero.
Quindi dirò quanto segue.
Prova a risultato è uguale all'intero dell'ingresso per favore.
Fornisci il numero e poi se otteniamo un errore qui
e stiamo per dire eccetto e stamperò whoops che non è un numero.
E poi dirò finalmente stampare e di tri eccetto infine.
Quindi eseguo questa operazione e andremo a scorrere questa funzione solo un po
', ma ora chiamerò questa funzione.
Inserisci shift.
Mi chiede di fornire un numero.
lanciare o trasformare 20 in un numero intero.
Diamo un 20 e ho appena avuto e il tentativo, tranne infine, ha senso che whoops che non è un numero che impronta perché siamo riusciti a
Ma cosa succede se eseguo di nuovo la cella.
E ora fornisco una parola.
Ora so che sicuramente non posso trasformare la parola stringhe in un numero intero.
Quindi quando eseguo questo, dice whoops che non è un numero.
Ora otteniamo la fine del tentativo.
Tranne finalmente.
Quindi vediamo come ora possiamo usare un ciclo while per fare continuamente questo blocco di codice di prova.
E poi tranne se c'è un errore lì.
OK, vediamo se possiamo regolare questa funzione in modo che invece
di finire dopo aver fornito la parola sbagliata, lo inseriremo all'interno di un ciclo while che continua
ad andare avanti e indietro finché non avrai effettivamente un blocco di codice con nessuna eccezione.
Quindi lo farò mentre è vero e dovresti sempre fare attenzione mentre lo fai.
Vero perché in pratica significa che devi usare un'istruzione break da
qualche parte per uscire da questo ciclo while.
Ho intenzione di indentare tutto questo evidenziato tutta la scheda di successo qui e dirò selvaggio vero.
Ottieni questo risultato come input quindi dico tranne whoops che non è un numero.
E poi ho intenzione di continuare a renderlo un po 'più leggibile.
Per quanto riguarda la logica, cosa sta succedendo ora diciamo che non c'è un errore allora sto per dire.
Altrimenti puoi davvero combinare Elswyth finalmente qui.
Quindi proveremo questo blocco di codice.
Se c'è un errore, ho intenzione di dire whoops che non è un numero.
Continua su altro significato, non c'è eccezione.
Ciò significa che l'utente ha fornito un numero intero.
Quindi dirò di si.
Grazie.
Ora ho bisogno di uscire da questo ciclo.
Quindi dirò qui break che
ricorda che l'istruzione break sale al suo loop inclosing sia while loop for loop che termina.
Quindi termina questo ciclo while.
Poi finalmente diremo e proveremo tranne alla fine.
semplicemente renderlo molto chiaro che il Principe I correrà sempre alla fine.
OK, quindi abbiamo solo inserito questi quattro blocchi di codice all'interno del nostro mentre è vero e andiamo a rompere
una volta che diciamo si grazie e avremo una dichiarazione finale che dice stampa e prova eccetto finalmente e possiamo
Quindi, a prescindere che ci sia un errore o meno, questo blocco di codice alla fine funzionerà sempre.
Quindi eseguiremo questo chiedere un numero intero.
Forniamo un intero corretto diciamo 20 hit invio.
Dice di si.
Grazie.
E la prova eccetto che alla fine correrò sempre alla fine.
Forniamolo.
Una stringa dirà q premere invio e dice whoops.
Questo non è un numero e la prova.
Finalmente correrò sempre alla fine.
Tranne che abbiamo mentre è vero qui e questa interruzione non è ancora stata eseguita.
Quindi abbiamo un'altra possibilità di fornire un numero che dirà.
D: Dice ancora Whoops.
mantenuto che può essere lanciato come un intero.
E puoi continuare a fornirgli più e più volte le cose sbagliate e continuerai a chiederti input finché non fornirai finalmente qualcosa che viene
Dici 90 e dice di si.
Grazie.
E la prova eccetto Finalmente avrò sempre ragione alla fine.
Quindi, cosa sta succedendo qui stiamo dicendo mentre proviamo
vero questo blocco di codice se c'è un'eccezione fai qualcosa e poi continui altrimenti significa che non c'è eccezione.
Puoi stampare una sorta di dichiarazione e poi rompere.
E in genere vorrete rompere questo mentre vero quando non c'è eccezione.
Poi alla fine se per qualche motivo avresti voluto qualcosa da continuare.
Quindi una buona cosa qui potrebbe essere come se dovessi chiederti di nuovo.
Nuova linea.
Quindi questo è un esempio più realistico del perché diresti alla fine.
Quindi, se eseguo di nuovo questo, ti diranno di fornire il numero.
Diamo la risposta sbagliata.
Dice che è il nostro numero.
Ti chiederò di nuovo per favore di fornire un numero e poi puoi fornirgli il numero corretto.
E dice di sì.
Grazie.
Sfortunatamente dirà che ti chiederò di nuovo.
Ecco perché molte volte le persone non amano mescolare altro.
E infine affermazioni, ma c'è un'opzione per te
nel caso tu lo voglia dove potresti fare invece di sbarazzarti di quella dichiarazione
finale e quando sei un codice come questo e dirai di fornire il mio numero.
Q Beh, questo non è un numero.
Puoi continuare a farlo più e più volte finché non
fornisci effettivamente il numero e dice Sì. Penso che tu decida se vuoi mescolare finalmente Elsin, ma puoi farlo se lo desideri.
Tutto ok.
Ecco le basi per provare.
Tranne.
Altro.
Prossima prossima ti daremo un incarico per testare le tue nuove abilità su questo.
Vedremo se lo sono.