‫Bentornato e questo video, finalmente risolveremo i problemi che abbiamo avuto nel nostro
‫programma qui, il nostro programma virtuale che abbiamo creato, e esamineremo anche la programmazione difensiva.
‫Quindi l'idea della programmazione difensiva è quella di rendere sicuro il codice che davvero pensi già a quali problemi potrebbero sorgere, perché in
‫questo caso, i problemi che potrebbero sorgere sono che, ad esempio, la
‫lista è vuota o vogliamo avere troppi amici.
‫Quindi vogliamo invitare più amici di quanti ne abbiamo.
‫E in questo caso, l'elenco è semplicissimo che abbiamo creato manualmente.
‫Ma immagina che provenga da un database.
‫Quindi proviene da un database o dal web, da un database cloud o qualcosa del genere.
‫E poi sarebbe una storia diversa perché non sapremmo mai quanto sia grande la lista in questo caso.
‫Possiamo vederlo nel codice, ma potremmo non saperlo a seconda della provenienza.
‫In questo caso, dobbiamo anticipare diversi problemi che potrebbero sorgere e possiamo testarli noi stessi durante
‫lo sviluppo.
‫Ad esempio, l'abbiamo già fatto giusto?
‫Abbiamo inserito più amici che abbiamo nella lista.
‫Quindi è semplice.
‫Eseguiamo semplicemente questo e quindi otteniamo questo argomento dall'eccezione di intervallo.
‫Ma dove stiamo ottenendo è interessante.
‫Quindi lo stiamo ottenendo al punto del nostro metodo amico di gruppo, anche se il problema sta
‫da qualche altra parte, perché se lo guardiamo, dice elenco nomi Shorris zero.
‫Quindi stiamo cercando di accedere a un elemento illecito che non è disponibile perché abbiamo superato l'elenco.
‫Trova un amico di partito e passiamo questa lista qui.
‫Quindi, se guardiamo da dove otteniamo questo elenco, questo potrebbe essere un buon punto di partenza perché possiamo vedere che stiamo cercando
‫di accedere a qualcosa che non è disponibile.
‫Quindi qual è il problema con ciò che viene reso disponibile?
‫Quindi possiamo guardare questa riga qui, ottenere la parte anteriore.
‫Ecco dove si chiama.
‫E possiamo vedere.
‫Va bene, quello è il buffer.
‫Destra?
‫Quindi otteniamo un buffer, che è questo elenco qui.
‫Quindi quello che otteniamo è un elenco dal livello più alto.
‫Quindi, di nuovo, possiamo vedere, va bene, abbiamo questo elenco di così e così, così tante persone ed è
‫da qui che otteniamo il valore.
‫E bene, un buon punto per verificare se l'elenco è buono è in realtà nel metodo degli amici delle feste, perché qui
‫otteniamo l'elenco giusto.
‫Quindi a questo punto abbiamo un elenco in modo da poter controllare questo elenco.
‫Possiamo vedere se questo elenco è abbastanza buono per quello che vogliamo fare.
‫E quello che vogliamo fare è scrivere qualcosa in base all'account degli elementi
‫in quell'elenco in modo da poter verificare se il conteggio è maggiore del conteggio dei punti dell'elenco.
‫E questa è la lista che ci è stata passata.
‫Quindi, se è così, quello che possiamo fare è semplicemente stampare qualcosa, non farlo o fare errori o qualcosa del
‫genere.
‫Ma una cosa ancora migliore che possiamo fare è creare il programma Kresh.
‫Quindi sappiamo che il programma ha un problema.
‫Ma allo stesso tempo interrompiamo l'esecuzione del programma in una fase molto precoce perché immaginiamo di avere una connessione a un database
‫e ora stiamo creando tutti questi diversi errori o stiamo semplicemente esaminando il codice e questo metodo diventa
‫amico è in esecuzione e diciamo che è connesso a un database e scrive qualcosa
‫nel database e quindi eseguiamo di nuovo il codice.
‫E per qualche ragione, lo stato del database è cambiato e ora siamo sbalorditi perché i dati che ci
‫vengono mostrati sono completamente senza senso e ci lavoriamo sopra.
‫Quindi correggere quel bug sarebbe un vero problema.
‫Va bene.
‫Quindi possiamo già catturarlo il prima possibile in modo da poter semplicemente lanciare un argomento fuori dall'intervallo di eccezione qui.
‫Quindi lancia nuovi argomenti fuori dall'intervallo di eccezione perché è quello che stavamo ottenendo giusto.
‫E un argomento fuori dall'eccezione di Reagan ha un sovraccarico multiplo.
‫Quindi possiamo avere questo qui con un nome Parum.
‫Possiamo avere un messaggio e con l'eccezione o un nome Perram con un messaggio.
‫Quindi qui potrei semplicemente dire qualcosa come, OK, il conteggio è il problema e il conteggio non può essere maggiore
‫degli elementi nell'elenco o qualcosa del genere.
‫OK, questo sarebbe un esempio di ciò che potremmo visualizzare.
‫Quindi eseguiamolo di nuovo, perché ora dovremmo essere in grado di rilevare effettivamente questo errore o almeno lanciare un argomento fuori
‫dall'eccezione dell'intervallo una volta ottenuto questo errore.
‫Va bene.
‫Quindi possiamo vedere eccezionali non gestiti.
‫È un argomento di sistema fuori portata.
‫L'eccezione non può essere maggiore degli elementi nell'elenco.
‫Conteggio parametri.
‫Ecco qual è il risultato di ciò che abbiamo scritto qui.
‫OK, ecco come apparirà l'eccezione.
‫Quindi ora sappiamo qual è il problema.
‫È un po' più espressivo prima che il problema non fosse in realtà qui.
‫Quindi lasciatemi commentare queste due righe.
‫Il problema non è stato lanciato a questo punto, ma è stato lanciato più in basso.
‫È stato inserito nel nostro metodo get different, quindi è nella riga 42, ma il problema effettivo è sorto molto
‫prima, giusto.
‫E index era tutta l'eccezione, ma è anche un'affermazione molto generica, giusto?
‫Potrebbe essere qualsiasi cosa.
‫Destra.
‫Quindi prenderlo prima ci aiuta a vedere dove sono i problemi che abbiamo.
‫Quindi quello che potremmo, ovviamente, fare è dire, OK, una volta inserito questo valore e diciamo
‫che questo valore proviene da un utente che inserisce un valore.
‫Destra.
‫Quindi puoi inserire qualsiasi valore da zero alla quantità di elementi della lista che abbiamo.
‫Quindi potremmo prenderlo anche prima.
‫Potremmo fare una prova anche qui.
‫Quindi se.
‫Amici, quel conteggio è.
‫Meno del valore che inseriamo qui e potremmo ottenere di nuovo questo valore dall'utente, quindi potremmo dargli un
‫messaggio, giusto?
‫Non lanceremmo la nostra eccezione.
‫Non faremmo crashare il nostro programma.
‫Chiediamo solo all'utente di inserire nuovamente un nuovo valore.
‫Ma non lo stiamo facendo qui perché noi come programmatori possiamo inserire il valore qui e forziamo questi errori manualmente in
‫questo momento.
‫Destra.
‫OK, quindi questo è un modo per risolverlo o in realtà un modo per prenderlo presto.
‫Ora, diciamo.
‫Qui inseriamo un valore stupido, come meno uno.
‫Va bene, ora eseguiamolo di nuovo.
‫In realtà, eseguiamolo di nuovo.
‫E il nostro programma sembra funzionare, ma non mostra nulla, quindi non ne mostra nessuno.
‫Le frecce non hanno generato errori, ma non mostra nessun amico.
‫Bene, il nostro programma sembra funzionare con meno uno perché cerchiamo di ottenere meno uno degli elementi
‫della nostra lista e beh, non ci fornisce alcuna informazione preziosa.
‫Quindi ora quello che possiamo, ovviamente, fare è aggiungere un'altra condizione qui.
‫Il conteggio dovrebbe essere Krater uguale a zero.
‫In caso contrario, potremmo scrivere qualcosa come il codice non può essere maggiore degli
‫elementi nell'elenco o inferiore a zero.
‫OK, questo è solo un modo per esprimerlo.
‫E ora, se lo eseguiamo di nuovo, genereremo questo errore.
‫OK.
‫Quindi questo è qualcosa in cui il programma non era frontera prima, ma ora noi come sviluppatori abbiamo capito, OK, questo è
‫uno stato che non vogliamo avere.
‫Questa è una situazione con cui non vogliamo lavorare, ok?
‫E come ho detto, tagliavamo mentre cercavamo di ottenere questo valore da qualche parte e cercavamo di
‫catturarlo anche prima.
‫Ora, supponiamo di avere una situazione ancora più divertente.
‫Quindi abbiamo una situazione in cui la mia lista di amici è vuota.
‫Quindi creerò solo un elenco vuoto qui.
‫Così.
‫Ora, questo verrà a dubitare e ora che abbiamo questo elenco vuoto, eseguiamolo di nuovo e vediamo se il nostro
‫programma funziona ancora.
‫E ora otteniamo ancora la nostra argomentazione fuori dall'intervallo di eccezione, quindi è piuttosto interessante.
‫Quindi sembra che l'eccezione che abbiamo creato qui risolva anche questo problema.
‫Quindi non dobbiamo esaminare manualmente come è l'elenco, anche se è vuoto.
‫Destra.
‫Quindi, se guardi la nostra lista di amici, la nostra lista di amici è vuota, ma alla fine otteniamo un conteggio di
‫zero.
‫Quindi, anche se l'elenco è nullo, l'elenco è ancora zero.
‫Quindi il valore che otteniamo è ancora zero.
‫Ma questo non è tutto ciò che possiamo effettivamente per un momento attuale.
‫Quindi, invece di analizzare la Francia con la Francia, che è questa lista vuota, possiamo effettivamente passare null qui.
‫Quindi diciamo che per qualche motivo non siamo riusciti a creare questo elenco perché la connessione al database non ha funzionato o qualcosa
‫del genere.
‫E di conseguenza entriamo.
‫E ora stiamo passando ora e proviamo a passare ora in un metodo che in realtà richiede un elenco.
‫Quindi eseguiamolo e vediamo che tipo di errore otteniamo questa volta.
‫Quindi ora otteniamo un riferimento null, eccezione, riferimento a un oggetto, non impostato su un'istanza di un elenco di oggetti
‫era null.
‫Quindi la lista che abbiamo passato adesso era adesso.
‫Quindi otteniamo questo errore anche prima di poter generare un errore.
‫Quindi quello che potremmo fare, ovviamente, è cogliere anche questa situazione, così potremmo andare avanti
‫e scrivere un'altra dichiarazione if.
‫Se list è null, genera un'altra eccezione del puntatore.
‫Genera un nuovo argomento eccezione null.
‫Quindi elenco.
‫L'elenco è vuoto, certo, può essere più descrittivo qui, quindi l'elenco non dovrebbe essere
‫vuoto.
‫Si prega di controllare la connessione Internet o qualcosa del genere.
‫Potrebbe essere la connessione Internet o da dove prendi i tuoi dati.
‫OK.
‫Quindi eseguiamolo di nuovo e dovremmo lanciare il nostro argomento eccezione null, come puoi vedere, l'elenco
‫è un elenco di parametri vuoto perfetto.
‫Va bene.
‫Ora, potresti chiederti, perché stiamo facendo tutto questo?
‫Non voglio che il mio programma vada sempre in crash.
‫Bene, lo facciamo affinché il nostro programma non entri nello stato in cui cambierebbe effettivamente qualcosa
‫nel database.
‫Non cambieremo nulla nel database e nel nostro programmino.
‫Ma immagina che sarebbe il caso allora.
‫È una situazione molto diversa e qui possiamo creare dei seri problemi.
‫Ora, voglio mostrarvi un'ultima cosa, perché prima avevamo tutto questo a posto, quindi prima avevamo
‫questa dichiarazione if e questa e quella e così via, e prima avevamo la lista di questo amico.
‫Sì, potrei effettivamente fermarmi prima che avessimo questi amici qui e passassimo amici laggiù, e poi proviamo ad avere 10
‫amici alla nostra festa, ma abbiamo solo sette amici.
‫Quindi questa situazione, una volta eseguita, ciò che possiamo fare è forzare questo errore che abbiamo avuto e l'errore era nel nostro
‫amico di partito.
‫OK, quindi otteniamo questo argomento fuori portata.
‫L'indice delle eccezioni era fuori portata.
‫Quindi questo è un problema che avevamo prima di risolverlo.
‫Destra.
‫Ma ora la cosa interessante che possiamo guardare è lo stack di chiamate.
‫Quindi c'è qualcosa chiamato stack di chiamate.
‫E mi permetta di renderlo un po' più grande qui, in realtà.
‫Voglio dire, chiudi tutti quelli.
‫Quindi ora diamo un'occhiata a questo stack di chiamate.
‫Questo stack di chiamate qui dice che siamo attualmente nella linea quarantasei.
‫Va bene.
‫Ecco dove siamo.
‫Quindi dobbiamo ottenere un metodo diverso.
‫Ora, se andiamo un gradino più in alto, possiamo vedere che è qui che è stato chiamato il metodo per ottenere il front party.
‫Ora siamo all'interno del metodo al plurale per ottenere amici della festa.
‫E cosa vogliamo sapere dove è stato chiamato questo metodo.
‫Beh, è stato chiamato sulla linea 13.
‫Quindi, con lo stack di chiamate, possiamo vedere da dove siamo stati chiamati, da dove siamo stati chiamati di nuovo e così
‫via.
‫Quindi possiamo salire fino al livello in cui lo faremo.
‫Il metodo iniziale è stato chiamato e il metodo iniziale è stato quello di ottenere amici di gruppo.
‫Quindi entriamo in questo ciclo while, quindi viene chiamato get party friend e entriamo in questo metodo qui.
‫E infine, la nostra variabile viene creata in base a un elenco vuoto.
‫Ok tutto bene.
‫Quindi spero che questo ti abbia dato una piccola introduzione al debug.
‫Certo, c'è molto altro da sapere, ma non voglio annoiarti con tutti i dettagli
‫perché alcune cose sono utili.
‫Ma molti di loro non saranno necessari nella tua vita quotidiana perché, voglio dire, in generale, puoi, ovviamente,
‫andare avanti e andare al debug e quindi controllare tutte le diverse finestre che puoi ottenere qui
‫e puoi esaminare le minacce in esecuzione in parallelo, i processi e così via.
‫Ma penso che quello che stai vedendo ora saranno davvero le cose principali o saranno le cose principali di cui
‫avrai bisogno, i principali strumenti di cui avrai bisogno per eseguire il debug del
‫tuo software.
‫Va bene.
‫Quindi spero che ti sia piaciuto e spero che tu possa usarlo nei tuoi programmi futuri.
‫E ora puoi finalmente vedere come viene risolto il debug.
‫E comunque, grazie per aver fornito questo feedback, perché ho ricevuto il feedback che mancava una sezione di debug,
‫quindi ho deciso di creare questa piccola sezione.
‫Quindi grazie mille per il feedback.
‫Se hai qualcosa che pensi manchi in questo corso o se pensi che qualcosa sia molto
‫brutto, per favore non darmi una valutazione negativa direttamente.
‫Ma fammi sapere di cosa si tratta così posso migliorare il corso, perché il mio obiettivo è quello di sfruttarlo al
‫meglio, ovviamente, sul mercato.
‫Quindi grazie mille per il tuo aiuto e spero di vederti nel prossimo video.