CodeGym /Java Blog /Random-IT /Vecchio livello 09
John Squirrels
Livello 41
San Francisco

Vecchio livello 09

Pubblicato nel gruppo Random-IT

Conoscenza contro abilità

Vecchio livello 09 - 1Il college ci ha insegnato che non c'è una grande differenza tra teoria e pratica. Beh, sicuramente capirai che non è la stessa cosa. Ma non vedi la differenza fondamentale. Eppure ce n'è uno. La maggior parte delle persone mette il segno di uguaglianza tra "lo so" e "posso". Fai? Che ne dite di qualche esempio?
  1. So che fumare mi fa male, ma fumo.
  2. So che il fast food mi fa male, ma lo mangio.
  3. Conosco le regole del traffico ma non so guidare.
  4. So che fare jogging mi fa bene, ma non faccio jogging la mattina.
Accade spesso che le persone prendano "lo so" per "posso". È un buon esempio con le regole del traffico. Se una persona conosce il regolamento e sa guidare, vuol dire che può guidare? No. E se pensa di saper guidare? Allora perché avrebbe bisogno di un istruttore: sa già tutto. Quando sei sicuro di sapere già tutto, probabilmente non imparerai nulla di nuovo. E se sei sicuro di saper fare tutto, non studierai. Un pensiero come questo non ti passerà nemmeno per la testa. E questo significa che perderai tutte le meravigliose opportunità di imparare qualcosa. Il solito college ti dà solo conoscenza; dovrai acquisire abilità da solo. Ma cosa sento? Hai fatto pratica oltre alla teoria nel tuo college? Ok, se hai studiato alla facoltà di fisica, realizza un modello funzionante di un motore a vapore con un'efficienza di almeno il 20%. Scommetto che sai come farlo, ma non sarai davvero in grado di farlo, vero? Sei un chimico ? Prepara una polvere senza fumo. Sai come, ma non puoi, ah? Matematico, sei? Calcola la traiettoria di un proiettile di artiglieria. Non dimenticare di prendere in considerazione la forma del guscio. I punti matematici non volano nella vita reale. E non ci sono cavalli sferici. Vecchio livello 09 - 2Biologo? Isolare la penicillina. Questa muffa cresce sui meloni, quindi lo sai. Sai come - meraviglioso! Puoi farlo? Economista?Fai una previsione della crescita del prezzo del petrolio. Fatto? E ora trasformalo in $ 2.000 o $ 200.000 all'anno in base alle tue previsioni. Hai mai giocato sul FOREX? Per soldi veri? O sai solo cos'è? Economia internazionale? Splendida! Dove apro una società offshore? A Hong-Cong, in Irlanda o negli Stati Uniti. Perché? Anche se lo sai, il che è dubbio, difficilmente sarai in grado di farlo, dal momento che non l'hai mai fatto davvero. Non hai nemmeno la minima idea di come farlo. Oh, non l'hai studiato al college? Che diritto ho di affidarti compiti per i quali non sei preparato? Perché questi sono i compiti della vita reale. Questa pratica IS , tutto ciò che hai studiato al college è: cavalli sferici, competizione perfetta - niente di tutto ciò esiste nella vita reale. Ma perché ho dimenticato di menzionarespecialista di marketing ? Qual è il modo migliore per spendere i miei $ 500 in modo che quante più persone possibile sappiano delle mie lezioni? Sulla pubblicità? Sei consapevole che non solo la pubblicità classica è già superata, ma anche il concetto di USP (proposta di vendita unica), che sono sicuro ti è stato insegnato all'università come panacea quasi unica. Dimentica di sapere qualcosa. Chiediti: cosa posso fare? Utile, voglio dire? Qualcosa per cui la gente pagherebbe? Buoni soldi, voglio dire? Quindi amici, esprimiamo gratitudine per un corso così meraviglioso come CodeGym. Grazie a ciò non solo saprai come programmare, ma sarai effettivamente in grado di farlo. Sarai anche in grado di trovare un lavoro e guadagnare bene in pochi anni. Spero che questi soldi siano sufficienti per vivere in modo piacevole e accogliente. Lo dirò ancora una volta, quindi ricorda: non importa quello che sai. L'unica cosa che conta è quali abilità utili hai, quelle che le persone sarebbero ansiose di pagarti. Prima lo capisci, meglio è.

Hai raggiunto un nuovo livello

Livello 9

Vecchio livello 09 - 3

1 Risha, Traccia dello stack

Vecchio livello 09 - 4- EHI! Oggi ti dirò cos'è la traccia dello stack. Ma prima lascia che ti spieghi cos'è lo stack. - Immagina una pila di carte - incarichi per un certo impiegato. Un nuovo incarico può essere messo in cima alla pila e prenderà un incarico dalla cima di una pila. Pertanto, gli incarichi non verranno eseguiti in base all'ordine di arrivo. Ogni volta che l'impiegato prende l'incarico che arriva per ultimo. Una tale struttura di raccolta è chiamata stack . - In Java, c'è una collezione speciale - Stack. Questa raccolta ha metodi «aggiungi un elemento» e «prendi (prendi/porta via) un elemento». Come già sai, l'ultimo elemento aggiunto verrà preso per primo. - Uhm. Non è difficile, immagino. - Bene. Allora lascia che ti spieghi cos'è una traccia dello stackÈ. - Immaginiamo che in Java la funzione А chiami la funzione B , e quest'ultima chiami la funzione C , che a sua volta chiami la funzione D . Quindi, per uscire dalla funzione B , devi prima uscire dalla funzione C , e per farlo devi uscire dalla funzione D . Questo è molto simile a una pila. - E qual è la somiglianza? - Nella pila, per arrivare a un determinato incarico, devi completare anche tutti gli incarichi messi in cima. - Beh, è ​​una specie di analogia, ma non sono sicuro di aver capito bene tutto. - Guarda qui. In Java uno stack è un insieme di elementi. È come fogli di carta in una pila. Per prendere il terzo dall'alto, devi prendere il secondo foglio, ma prima devi prendere il primo. Puoi sempre mettere e prendere fogli, ma puoi metterli solo sopra e prendere solo dall'alto. Lo stesso vale per la chiamata di funzione. La funzione А chiama la funzione B , quest'ultima chiama la funzione C . Per uscire da А , devi prima uscire da B , e per farlo devi uscire da C . - Apetta un minuto. Se ho capito bene, l'intera pila risulta in «può essere preso solo l'ultimo foglio che è stato messo nella pila» e «prima, l'ultima funzione chiamata dovrebbe uscire». È così? - SÌ. Quindi, la sequenza delle chiamate di funzione è il «function call stack», o semplicemente «call stack». La funzione chiamata last deve essere terminata per prima. Diamo un'occhiata all'esempio: Vecchio livello 09 - 5- OK. Tutto è chiaro con la chiamata di funzione, immagino. Ma cos'è questo StackTraceElement ? - Java virtual machine registra tutte le chiamate di funzione. A tale scopo ha una raccolta speciale: una pila. Quando una funzione ne chiama un'altra, JVM inserisce un nuovo elemento StackTraceElement in questo stack. Al termine della funzione, l'elemento viene eliminato dallo stack. Pertanto, questo stack memorizza sempre informazioni aggiornate sullo stato attuale dello «stack di chiamate di funzione». - Ogni StackTraceElementcontiene informazioni sul metodo chiamato. Quindi puoi ottenere il nome di questo metodo usando getMethodName . - L'esempio sopra lo mostra:
  1. Ottieni lo «stack di chiamate»:
  2. Itera l'array usando il ciclo for-each . Spero che tu non l'abbia dimenticato.
  3. Stampa i nomi dei metodi su System.out .
- Una cosa interessante, e apparentemente facile. Grazie Risha!

2 Diego, Attività sulla visualizzazione della traccia dello stack

- Ehi, Amico! Ecco un piccolo compito per visualizzare sullo schermo una traccia dello stack.
Compiti
1 Ogni metodo dovrebbe restituire i suoi
cinque metodi StackTrace Write che si chiamano a vicenda. Ogni metodo dovrebbe restituire il suo StackTrace.
2 StackTrace di nuovo
Scrivi cinque metodi che si chiamano a vicenda. Ogni metodo dovrebbe restituire il nome del suo metodo chiamante. È possibile ottenere il metodo chiamante utilizzando StackTrace.
3 Il metodo dovrebbe restituire il numero di riga del codice da cui questo metodo è stato chiamato
Scrivere cinque metodi che si chiamano a vicenda. Ogni metodo deve restituire il numero di riga del codice da cui è stato chiamato questo metodo. Utilizzare la funzione element.getLineNumber() .
4 Traccia dello stack di 10 chiamate
Scrivere il codice per ottenere una traccia dello stack di 10 chiamate.
5 Il metodo deve restituire un risultato: la profondità della traccia dello stack
Scrivere un metodo che visualizzi e restituisca la profondità della traccia dello stack. La profondità della traccia dello stack è il numero dei suoi metodi (il numero di elementi nell'elenco).

3 Elly, Errori ed eccezioni

- Ehi, Amico! Oggi abbiamo una lezione molto interessante. Ti parlerò delle eccezioni. L'eccezione è un meccanismo speciale per controllare gli errori nel programma. Ecco alcuni esempi di errori che possono verificarsi nel programma:
  1. Il programma tenta di scrivere un file sull'intero disco.
  2. Il programma tenta di chiamare un metodo di una variabile che memorizza il riferimento null.
  3. Il programma cerca di dividere un numero per 0.
Queste azioni generano un errore. Di solito, questo porta alla chiusura di un programma : non ha senso continuare a eseguire il codice. - Perché? - Ha senso girare la ruota quando l'auto sta cadendo da un dirupo? - Vuoi dire che il programma dovrebbe finire? - SÌ. Ecco com'era prima. Qualsiasi errore ha portato alla chiusura di un programma. - E' una decisione molto intelligente. - Non sarebbe meglio provare a lavorare? - Sì. Hai digitato un testo enorme in MS Word, lo hai salvato, non è stato salvato, ma il programma ti dice che va tutto bene. E continui a digitare. Sciocco, non è vero? - Sì. - Quindi i programmatori hanno escogitato una mossa interessante:ogni funzione ha restituito lo stato del suo lavoro. 0 indicava che la funzione funzionava come previsto, qualsiasi altro valore indicava che si era verificato un errore : questo valore era un codice di errore. - Ma questo approccio aveva uno svantaggio. Dopo ogni (!) chiamata di funzione dovevi controllare il codice (numero) restituito dalla funzione. In primo luogo, era scomodo: il codice di gestione degli errori veniva eseguito raramente, ma dovevi sempre scriverlo. In secondo luogo, le funzioni stesse restituiscono spesso valori diversi: cosa farne? - Sì. Questo è quello che stavo per chiedere. - Poi è arrivato un futuro luminoso: erano apparse eccezioni e gestione degli errori. Ecco come funziona:
  1. Quando si verifica un errore, Java virtual machine crea un oggetto speciale, un'eccezione, contenente tutte le informazioni sull'errore. Per errori diversi ci sono diverse eccezioni.
  2. Quindi questa eccezione forza il programma a interrompere immediatamente la funzione corrente e la funzione successiva, finché non esce dal metodo principale. Dopodiché il programma termina. Gli sviluppatori Java chiamano questo processo «ripristina lo stack di chiamate».
- Ma hai detto che il programma non uscirà di sicuro. - Esatto, perché c'è un modo per cogliere l'eccezione. Quando e dove vuoi, puoi scrivere un codice speciale per rilevare queste eccezioni e fare qualcosa di importante. - Per fare questo, c'è una speciale costruzione try-catch . Guarda come funziona: Vecchio livello 09 - 6- Perché «Dopo la chiamata a method1. Non verrà mai mostrato» non verrà visualizzato sullo schermo? - Sono contento che tu l'abbia chiesto. Nella riga 25, c'è una divisione per zero. Ciò porta a un errore: un'eccezione. Java virtual machine ha creato l'oggetto ArithmeticException contenente le informazioni sull'errore. Questo oggetto è un'eccezione. - Si è verificata un'eccezione all'interno del metodo method1() .Ciò ha comportato l'immediata cessazione del metodo. Porterebbe anche alla chiusura del metodo main , se non ci fosse un blocco try-catch . - Se si verifica un'eccezione all'interno del blocco try, verrà rilevata nel blocco catch . Il resto del codice nel blocco try non verrà eseguito, l'esecuzione del blocco catch inizierà immediatamente. - Non capisco bene. - In altre parole, questo codice funziona così:
  1. Se si verifica un'eccezione all'interno del blocco try , il codice in questo blocco non viene più eseguito, ma viene avviata l'esecuzione del blocco catch .
  2. Se non si è verificata alcuna eccezione, il blocco try viene eseguito fino alla fine e catch non viene mai eseguito .
- Ehm! - Immagina che dopo ogni chiamata di metodo controlliamo se il metodo chiamato è terminato da solo o a causa di un'eccezione. Se si è verificata un'eccezione, JVM avvia l'esecuzione del block catch se è disponibile e rileva un'eccezione. Se non è presente alcun blocco catch, JVM termina il metodo corrente. Quindi lo stesso controllo inizia nel metodo che ha chiamato il metodo corrente. - Ora penso di aver capito. - Va bene. - E cos'è quell'eccezione all'interno del blocco catch? - Tutte le eccezioni sono classi ereditate dalla classe Exception. Possiamo catturarne uno qualsiasi specificando la sua classe nel catchblock, o tutti in una volta specificando un'eccezione di classe genitore comune. Quindi, dalla variabile e (questa variabile memorizza il riferimento di un oggetto eccezione) è possibile ottenere tutte le informazioni necessarie sull'errore. - Grande! E se nel mio metodo si verificano diverse eccezioni, posso gestirle in modi diversi? - Si deve. Puoi farlo in questo modo: Vecchio livello 09 - 7- Il blocco try può contenere più blocchi catch , ognuno dei quali catturerà le eccezioni del suo tipo. - Uhm. Beh, ho capito. Certo, non scriverò qualcosa del genere da solo. Tuttavia, non mi spaventerò se incontro tale codice.

4 Elly, RuntimeException, lancia

Vecchio livello 09 - 8- Ho deciso di sollevare un altro argomento oggi. In Java, tutte le eccezioni sono divise in due tipi: controllate/controllate e non controllate/non controllate . Le eccezioni controllate devono essere catturate, quelle non controllate possono essere catturate ma non è necessario . - È possibile generare eccezioni in un codice di proposito? - Nel tuo codice, puoi lanciare tu stesso le eccezioni. Puoi persino scrivere le tue eccezioni. Ma approfondiremo questo buco più tardi. Ora impariamo come lavorare con le eccezioni lanciate dalla macchina virtuale Java. - OK. - Se le eccezioni ClassNotFoundException e FileNotFoundExceptionvengono generati (appaiono) in un metodo, il programmatore deve specificarli nella firma di un metodo (intestazione del metodo). Tali eccezioni sono verificate. Ecco come appare di solito: Vecchio livello 09 - 9- Quindi, scriviamo solo i lanci ed elenchiamo le eccezioni separate da virgole. Giusto? È così? - SÌ. Ma c'è un'altra cosa interessante. Affinché l'esempio seguente sia stato compilato, il metodo che chiama method1() deve intercettare queste eccezioni o lanciarle in avanti. Se si desidera lanciare un'eccezione verificata, è necessario specificarlo nell'intestazione del metodo . - Ancora una volta, se nel metodo principale si desidera chiamare un metodo che ha nella sua frase di intestazione lancia FileNotFoundException, …allora devi fare una di queste due cose:
  1. per catturare le eccezioni FileNotFoundException, …
    Dovrai racchiudere il codice in cui chiami un metodo pericoloso con un blocco try-catch
  2. per non rilevare le eccezioni FileNotFoundException, …
Dovrai aggiungere queste eccezioni all'elenco dei lanci del tuo metodo main . - Mi fai un esempio? - Guarda qui: Vecchio livello 09 - 10- Questo esempio non verrà compilato, perché il metodo main chiama il metodo method1(), che genera eccezioni che devono essere catturate. - Per compilare l'esempio, è necessario aggiungere la gestione delle eccezioni al metodo main . Puoi farlo in due modi: Vecchio livello 09 - 11- E qui lo prendiamo usando try-catch : Vecchio livello 09 - 12- Sta diventando più chiaro, ma molto poco. - Esamina l'esempio seguente: Vecchio livello 09 - 13- C'è ancora un'eccezione: RuntimeException e le classi ereditate da essa.Non è necessario catturarli o lanciarli. Queste sono eccezioni non controllate. Queste eccezioni sono considerate difficili da prevedere, quindi è quasi impossibile prevederne il verificarsi. Puoi fare le stesse cose con loro, ma non è necessario specificarli in throws .

5 Risha, Rolling the call stack, come farlo nelle eccezioni

- Vorrei dirvi qualcosa in più su come funzionano le eccezioni. L'esempio seguente spiega che: Vecchio livello 09 - 14- Non capisco. - OK. Spiegherò cosa sta succedendo. - Nell'esempio a sinistra, chiamiamo diversi metodi in ordine concatenato. In method2() creiamo e lanciamo specificamente un'eccezione (per avviare un errore). - L'esempio a destra mostra cosa succede. Guarda il metodo2() . Questo è ciò in cui si trasforma la creazione di un'eccezione: creiamo un oggetto di tipo RuntimeException , lo memorizziamo in una speciale variabile exception e usciamo immediatamente dal metodo – return . - In method1 , dopo la chiamata di method2 c'è un controllo,se c'è un'eccezione o no; se c'è un'eccezione, allora method1 termina immediatamente. Questo controllo viene eseguito implicitamente dopo aver chiamato ogni (!) metodo Java. - Oh! - Esattamente. - Nella colonna a destra nel metodo main ho scritto cosa succede quando un'eccezione viene catturata dal blocco try-catch . Se non si sono verificate eccezioni, il codice continua a essere eseguito come pianificato. Se c'era un'eccezione del tipo specificato in catch , la gestiamo. - E cosa significano throw e instanceof ? - Guarda l'ultima riga a sinistra lancia nuove RuntimeException(s). In questo modo creiamo e lanciamo un'eccezione. Questo è solo un esempio. Non lo faremo finora. - Usando il comando « а instanceof B » nel blocco di destra controlliamo se l'oggetto a ha il tipo B . Ovvero, se l'oggetto archiviato nella variabile exception ha il tipo RuntimeException . È un'espressione logica. - Beh, sta diventando un po' più chiaro.

6 Diego, compito di cattura eccezionale

- Guarda qui! Lo zio Diego ha portato pochi compiti a pescare per te. Ti auguro buona fortuna. Penso che ne avrai bisogno. Eh. Vecchio livello 09 - 15- Ehi, Amico! Ecco alcune interessanti attività di cattura delle eccezioni.
Compiti di cattura
1 1. Eccezione quando si opera con i numeri
Cattura l'eccezione che si verifica quando si esegue il codice:
int a = 42 / 0;
Visualizza l'eccezione sullo schermo, specificandone il tipo
2 2. Eccezione quando si opera con le stringhe
Cattura l'eccezione che si verifica quando si esegue il codice:
String s = null;
Stringa m = s.toLowerCase();
Visualizza l'eccezione sullo schermo, specificandone il tipo.
3 3. Eccezione quando si opera con gli array
Cattura l'eccezione che si verifica quando si esegue il codice:
int[] m = new int[2];
m[8] = 5;
Visualizza l'eccezione sullo schermo, specificandone il tipo.
4 4. Eccezione quando si opera con le raccolte List
Cattura l'eccezione che si verifica quando si esegue il codice:
ArrayList<String> list = new ArrayList<String>();
Stringa s = lista.get(18);
Visualizza l'eccezione sullo schermo, specificandone il tipo.
5 5. Eccezione quando si opera con raccolte di mappe
Cattura l'eccezione che si verifica quando si esegue il codice:
HashMap<String, String> map = new HashMap<String, String>(null);
map.put(null, null);
map.remove(null);
Visualizza l'eccezione sullo schermo, specificandone il tipo.
- Suggerimento: prima scrivi un programma, poi vedi quale eccezione si verifica e poi cambia il codice e cattura quell'eccezione.

7 Risha, Come funziona la cattura multipla

Vecchio livello 09 - 16- Ora, alcune lezioni più interessanti. Mi piace tanto insegnare. - Voglio dirti come funziona una cattura multipla . In realtà è molto semplice: quando si verifica un'eccezione nel blocco try , l'esecuzione del programma viene trasferita al primo catch . - Se il tipo specificato tra parentesi del blocco catch è lo stesso del tipo dell'oggetto eccezione, l'esecuzione del codice inizia all'interno di {}. Altrimenti andiamo alla cattura successiva . Il controllo viene ripetuto lì. - Se non ci sono più blocchi catch , ma l'eccezione non è stata catturata, viene lanciata in avanti e il metodo corrente viene interrotto. - Vedo. Verrà eseguita quella cattura, il cui tipo corrisponde al tipo di eccezione. - Sì giusto. In realtà, è un po' più complicato: il punto è che le classi possono essere ereditate l'una dall'altra. Se la classe «Mucca» è ereditata dalla classe «Animale», l'oggetto del tipo «Mucca» può essere memorizzato non solo in una variabile del tipo «Mucca», ma anche in una variabile del tipo «Animale» . - E allora? - Poiché tutte le eccezioni sono ereditate dalle classi Exception o RuntimeException (che è anche ereditata da Exception ), possono essere tutte catturate usando i comandi catch (Exception e) o catch (RuntimeException e) . - E allora? - Ciò significa che,in primo luogo, puoi rilevare qualsiasi eccezione utilizzando il comando catch(Exception e) . In secondo luogo, l'ordine dei blocchi di cattura è importante. Esempi: - ArithmeticException risultante dalla divisione per 0 viene rilevata nel secondo catch. Vecchio livello 09 - 17- Nell'esempio seguente, ArithmeticException viene rilevata nel primo catch , poiché le classi di tutte le eccezioni vengono ereditate da Exception. Quindi, Exception cattura qualsiasi eccezione . Vecchio livello 09 - 18- Nell'esempio seguente, l'eccezione ArithmeticException non viene rilevata, ma inoltrata al metodo chiamante. Vecchio livello 09 - 19- Beh, ora sta diventando più chiaro. Queste eccezioni non sono così facili. - Sembra solo così. In effetti, è una delle cose più semplici in Java. - Sono in dubbio se esserne contento o arrabbiato per questo...

8 Diego, Attività di cattura di eccezioni multiple

- Ehi, Amico! Ieri mi sono ubriacato e ho complicato troppo i tuoi compiti, ma spero che non ci siano rancori da parte tua e li risolverai tutti? È per il tuo bene. Qui:
Compiti
1 1. Eccezioni
Esiste un metodo che genera due eccezioni ereditate da Exception e le altre due ereditate da RuntimeException : NullPointerException , ArithmeticException , FileNotFoundException e URISyntaxException .

Devi catturare NullPointerException e FileNotFoundException , ma non catturare ArithmeticException e URISyntaxException . Come farlo?
2 2. Cattura delle eccezioni
Ci sono tre eccezioni sequenzialmente ereditate da Exception :
class Exception1 extends Exception
class Exception2 extends Exception1
class Exception3 extends Exception2
C'è un metodo, che è descritto come segue:
public static void method1() throws Exception1, Exception2, Exception3

Scrivi un catch block per catturare tutti e tre Exception1 , Exception2 e Exception3
3 3. Cattura di eccezioni selettive
1. Scopri quali eccezioni vengono lanciate dal metodo BEAN.methodThrowExceptions .
2. Il metodo processExceptions() dovrebbe chiamare il metodo BEAN.methodThrowExceptions e gestire le eccezioni:
2.1. se si verifica un'eccezione FileSystemException , registrarla chiamando il metodo BEAN.log e lanciare in avanti
2.2. se si verifica un'eccezione CharConversionException o qualsiasi altra IOException , è sufficiente registrarla chiamando il metodo BEAN.log
3. Aggiungere la classe/tipo dell'eccezione che si sta inoltrando in 2.1. al processoEccezioni()firma del metodo.
4. Gestire l'eccezione rimanente nel metodo main() e registrarla. Usa try..catch

Suggerimento:
se hai catturato l'eccezione MyException , che non volevi catturare, puoi lanciarla in avanti usando il seguente codice:
catch (MyException e) {
throw e;
}
4 4. Catturare le eccezioni verificate
Gestire tutte le eccezioni verificate nel metodo processExceptions() .
È necessario visualizzare sullo schermo ogni eccezione verificata che si è verificata.
Puoi usare solo un blocco try .
5 5. Catturare le eccezioni non controllate
Gestire tutte le eccezioni non controllate nel metodo processExceptions() .
È necessario visualizzare sullo schermo una traccia dello stack di ogni eccezione avvenuta utilizzando il metodo printStack() .
Puoi usare solo un blocco try .

9 Professore, Lezione sulle eccezioni

- Oggi abbiamo un argomento super interessante: le eccezioni. All'epoca, quando giovani scienziati e programmatori erano profondamente entusiasti di questo argomento... - Scusa, devo andare in laboratorio. Ecco gli appunti delle lezioni. Penso che lo capirai da solo. Qui: Eccezioni Java (documentazione Oracle) Gestione delle eccezioni in Java (punto Java T) Java - Gestione delle eccezioni (punto tutorial) Gestione delle eccezioni Java di base

10 Giulio

- Amigo, cosa ne pensi della lezione di oggi? Il tuo cervello a positroni non ha ancora funzionato? I compiti di Diego sono sufficienti per sfinire chiunque. Beviamoci un momento di birra e rilassiamoci. Sei ancora in piedi?

11 Capitano Scoiattoli

- Ciao, soldato! - Buongiorno signore! - Ho delle notizie fantastiche per te. Ecco un rapido controllo per rafforzare le tue abilità. Fallo ogni giorno e migliorerai le tue abilità molto velocemente. Le attività sono appositamente progettate per essere eseguite in Intellij IDEA.
Attività aggiuntive da svolgere in Intellij Idea
1 1. Divisione per zero
Creare un metodo public static void divisionByZero() , in cui è necessario dividere qualsiasi numero per zero e visualizzare sullo schermo il risultato della divisione.
Avvolgi la chiamata al metodo divisionByZero() in un try..catch . Visualizza sullo schermo la traccia dello stack delle eccezioni utilizzando il metodo exception.printStackTrace() .
2 2. Conto alla rovescia da 10 a 0
Scrivi un ciclo per il conto alla rovescia da 10 a 0. Usa Thread.sleep(100) per fare un ritardo;
Avvolgi la chiamata di sonno in un try..catch .
3 3. Racchiudere un metodo in un try..catch
Leggere i numeri dalla tastiera. Scrivi un codice per leggere i numeri dalla tastiera in un metodo separato readData() .
Avvolgi l'intero corpo di questo metodo (l'intero codice all'interno del metodo readData() , ad eccezione della dichiarazione dell'elenco in cui verranno memorizzati i numeri) in un try..catch .

Se l'utente inserisce del testo invece di inserire un numero, il metodo deve rilevare l'eccezione e visualizzare sullo schermo tutti i numeri inseriti in precedenza.
Visualizza i numeri sullo schermo. Ogni numero dovrebbe essere su una nuova riga. L'ordine dei numeri dovrebbe essere proprio come era in input.
4 4. Convertitore di data
Leggere dalla tastiera una data nel formato «18/08/2013»
Visualizzare sullo schermo la data nel formato «18 AUG 2013».
Utilizzare gli oggetti Date e SimpleDateFormat .
5 5. Vocali e consonanti
Scrivi un programma che legga la riga dalla tastiera.
Il programma dovrebbe visualizzare sullo schermo due stringhe:
1) la prima stringa dovrebbe contenere vocali
2) la seconda stringa dovrebbe contenere consonanti e caratteri di punteggiatura del testo inserito.
Separare i caratteri con spazi.

Esempio di input:
Stop look listen
Esempio di output:
oooie
stplklstn
6 6. La favola di Cappuccetto Rosso
1. Ci sono cinque classi: Cappuccetto Rosso, nonna, tortino, taglialegna, lupo.
2. Ogni classe ha due campi di tipo ArrayList : kill e ate.
3. Gli oggetti necessari sono già stati creati (cappuccio, nonna, ...).
4. Creare la relazione corretta (chi ha mangiato e ucciso chi) per ottenere la logica di «Cappuccetto Rosso».
7 7. Sposta modifiche statiche
Sposta i modificatori statici in modo che il codice venga compilato.
8 8. Elenco di array di numeri
Crea un elenco i cui elementi sono array di numeri. Aggiungi all'elenco cinque array di oggetti con lunghezza 5, 2, 4, 7, 0, rispettivamente. Riempi gli array con qualsiasi dato e visualizzali sullo schermo.
9 9. Dieci gatti
Crea una classe Cat con un campo String name .
Crea un dizionario Map<String, Cat> , aggiungi 10 gatti sul modello «Nome» - «Gatto».
Ottenere dalla mappa un insieme di nomi e visualizzare l'insieme sullo schermo.
- Quei compiti erano per i verdi. Ho aggiunto attività bonus di maggiore complessità. Solo per pistole superiori.
Compiti bonus
1 1. Il programma non viene compilato ed eseguito. Aggiustalo.
Attività: il programma dovrebbe leggere dalla tastiera due nomi di file e copiare il primo file nella posizione specificata dal secondo nome.
2 2. Aggiungere nuove funzionalità al programma.
Vecchio compito: il programma dovrebbe leggere dalla tastiera due nomi di file e copiare il primo file nella posizione specificata dal secondo nome.
Nuovo compito: il programma dovrebbe leggere dalla tastiera due nomi di file e copiare il primo file nella posizione specificata dal secondo nome.

Se il file (che verrà copiato) con il nome specificato non esiste, il programma dovrebbe visualizzare sullo schermo il messaggio «File non esiste» e riprovare a leggere il nome del file dalla console prima di leggere il nome del secondo file (di destinazione).
3 3. Algoritmo di apprendimento e pratica.
Leggi dalla tastiera l'elenco di parole e numeri. Visualizza sullo schermo le parole in ordine crescente ei numeri in ordine decrescente.

Esempio di input:
Ciliegia
1
Fagiolo
3
Mela
2
0
Anguria

Esempio di output:
Mela
3
Fagiolo
2
Ciliegia
1
0
Anguria
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION