Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
Abbiamo partecipato all'OVHcloud Summit 2025, conferenza annuale in cui l'azienda francese presenta le sue ultime novità. Abbiamo parlato di cloud pubblico e privato, d'intelligenza artificiale, di computer quantistici e di sovranità. Che forse, però, dovremmo chiamare solo "sicurezza"
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a
Abbiamo potuto mettere le mani in anteprima sul nuovo monitor MSI dedicato ai giocatori: un mostro che adotta un pannello QD-OLED da 26,5 pollici con risoluzione 2560 x 1440 pixel, frequenza di aggiornamento fino a 500 Hz e tempo di risposta di 0,03 ms GtG
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro
DJI aggiorna la sua linea di droni ultraleggeri con Neo 2, un quadricottero da 160 grammi che mantiene la compattezza del predecessore ma introduce una stabilizzazione meccanica a due assi, sensori omnidirezionali e un sistema LiDAR
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-01-2009, 12:07   #1
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
[Domande teoriche] Java e programmazione ad oggetti

Salve,
allora devo dare un esame di Linguaggi di programmazione che comprende un primo esame scritto di teoria ed eventualmente (se passo il primo) un successivo secondo esame scritto di pratica in JAVA (che palle 2 esami per uno stesso corso...)

Il primo esame teorico oltre a degli esercizzi (assembler, far vedere cosa succede in memoria nello stack e nell'heap, etcetc) è composto anche da domande teoriche...mi dite se secondo voi la risposta a questa può essere corretta o se c'è da integrare con qualcosa in più?

1) Cosa sono le eccezioni in un linguaggio di programmazione? In che senso si afferma che: "un'eccezione rimanda al contesto superiore" ?

Io direi: Le eccezioni sono delle situazioni impreviste ed eccezionali che possono verificarsi all'interno di una routine (o metodo) che potenzialmente potrebbero rivelarsi pericolose.
Per esempio se ho una classe Frazione che rappresenta frazioni mediante 2 variabili di istanza intere: numeratore e denominatore...se tento di creare un oggetto Frazione con denominatore nullo lancio un'eccezione poichè altrimenti creerei un oggetto sbagliato.

Le eccezioni quindi sono usate quando un metodo si trova a dover gestire una situazione che non capisce edx invece di bloccare la computazione comunica a chi lo ha invocato il metodo che non riesce ad eseguire e proprio in questo senso le eccezioni rispondono al contesto superiore.

Ad esempio nello stack ho che il metodo main() chiama un metodo A che a sua volta chiama un metodo B in cui viene lanciata un'eccezione che viene rimandata ad A. Quando A riceve un'eccezione può fare 3 cose:

1) A non sà che fare --> Rimanda l'eccezione al contesto superiore cioè il main()
2) A sà che fare: risolve il problema e richiama il metodo B
3)A capisce che si tratta di un errore fatale e blocca la computazione.

Se un'eccezione continua ad essere mandata al proprio contesto superiore prima o poi arriverà al main che essendo un metodo si comporta come gli altri rimandandolo al cotesto superiore o killando il processo in quanto nel main èla stessa cosa...perchèil suo contesto superiore è la JVM che terminerebbe il processo.

Le eccezioni sono quindi un MECCANISMO DI RETURN ALTERNATIVO

Grazie
Andrea
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2009, 13:41   #2
agente mm8
Senior Member
 
Iscritto dal: Mar 2008
Messaggi: 401
Mi sebra fatto bene...
Io però all'ultima frase aggiungerei:
Le eccezioni sono quindi un MECCANISMO DI RETURN IN CASO DI ERRORE
Poi non so, essendo in terza media, non ho mai affrontato esami del genere
agente mm8 è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2009, 18:52   #3
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Il meccanismo di return passa l'esecuzione al chiamante in un punto prestabilito. Le eccezioni invece interrompono l'esecuzione e risalgono lo stack di chiamata fino ad incontrare un catch che blocca la risalita. Di fatto quindi la differenza fra un meccanismo di return ed un meccanismo di eccezione è abissale, perché con un return sai a chi ritorna l'esecuzione, con un'eccezione no

Concordo anche nel modificare l'ultima frase, anzi la toglierei proprio.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2009, 22:01   #4
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Quote:
Originariamente inviato da cionci Guarda i messaggi
Il meccanismo di return passa l'esecuzione al chiamante in un punto prestabilito. Le eccezioni invece interrompono l'esecuzione e risalgono lo stack di chiamata fino ad incontrare un catch che blocca la risalita. Di fatto quindi la differenza fra un meccanismo di return ed un meccanismo di eccezione è abissale, perché con un return sai a chi ritorna l'esecuzione, con un'eccezione no
Questo è vero. Ma si può "rimediare", volendo.
A me personalmente piace limitare al massimo i side effect; se so che una funzione può fallire, faccio qualcosa del genere. (pseudo-java)
Codice:
// metodo che può fallire
final Either<Result, Exception> iCouldFail() {
  try {
    ...
    return Either.right(new Result()); // tutto bene
  } catch (final APossibleException ex) {
    return Either.left(ex);
  }
}

// e poi lo uso cosi - il "punto di ritorno" è sempre e solo uno
final Either<Result, Exception> value = iCouldFail();
if value.isRight() {
  // tutto ok
}
else {
  // gestisci l'errore
}
Se java supportasse il pattern matching sarebbe meno verboso...
Ma questo è solo il mio personalissimo gusto eh...preso in prestito da haskell

Ultima modifica di shinya : 23-01-2009 alle 09:42.
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2009, 09:18   #5
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da shinya Guarda i messaggi
...
Tecnica interessante, shinya.
Ho una domanda: se capita che il tuo metodo ICouldFail() al suo interno esegua codice che potenzialmente può generare, diciamo 3 tipi diversi di checked exception, e il chiamante debba gestire in modo diverso tutti e tre i casi?
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2009, 09:41   #6
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Tecnica interessante, shinya.
Ho una domanda: se capita che il tuo metodo ICouldFail() al suo interno esegua codice che potenzialmente può generare, diciamo 3 tipi diversi di checked exception, e il chiamante debba gestire in modo diverso tutti e tre i casi?
Beh considera che non è una tecnica che uso sempre... anche perchè java è quel che è, e uscire troppo dai binari può costare caro in termini di comprensibilità del codice (soprattutto per qualcun'altro che non ha dimestichezza con un pò di programmazione funzionale).
Una strada che mi viene in mente, sempre per usare questa "tecnica" nello scenario che hai dipinto tu, è di wrappare tutte le eccezzioni in una di più alto livello e lanciare quella. Poi dal chiamante gestire i vari casi (via instanceof, ma anche no, o via polimorfismo, con un metodo per ogni eccezione).

Ma ovviamente bisognerebbe valutare sul momento se usare un approccio tradizionale o altro. Comunque se ti interessa c'è una libreria che fornisce già tutti questi "pattern" presi in prestito da haskell (e amici)... che è questa qua: http://functionaljava.org/
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2009, 10:07   #7
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da shinya Guarda i messaggi
Una strada che mi viene in mente, sempre per usare questa "tecnica" nello scenario che hai dipinto tu, è di wrappare tutte le eccezzioni in una di più alto livello e lanciare quella. Poi dal chiamante gestire i vari casi (via instanceof, ma anche no, o via polimorfismo, con un metodo per ogni eccezione).
Ecco, proprio come pensavo, solo che così diventa molto "verboso" (e instanceof non mi piace tantissimo, preferisco la versione polimorfica).
Comunque è un limite/caratteristica di Java: volevo solo sapere se c'erano modi più "furbi" (più snelli) per farlo e non ne ero sicuro.
Grazie per la delucidazione.

Quote:
Originariamente inviato da shinya Guarda i messaggi
Ma ovviamente bisognerebbe valutare sul momento se usare un approccio tradizionale o altro. Comunque se ti interessa c'è una libreria che fornisce già tutti questi "pattern" presi in prestito da haskell (e amici)... che è questa qua: http://functionaljava.org/
Interessante, me la guardo; grazie per la risorsa
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro DJI Neo 2 in prova: il drone da 160 grammi guada...
L'IA "seria" di Appian è diversa: inserita nei processi e rispetta dati e persone L'IA "seria" di Appian è divers...
Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
AWS Transform si evolve: agenti IA per m...
I social network hanno stancato gli ital...
Star Citizen supera i 900 milioni di dol...
Netflix ha eliminato la funzione Cast pe...
L'IA è una bolla e scoppier&agrav...
Un rapporto collega i data center di Ama...
Troppa concorrenza per Cherry (quella de...
Entro il 2035 la Cina vuole costruire de...
Tineco in super sconto: ultimo giorno di...
La Cina creerà una costellazione ...
I veicoli elettrici emettono radiazioni ...
Stai per acquistare una PS5? Attento al ...
iPhone 17 Pro Max finalmente disponibile...
Apple, Sony, Bose, Beats, Sennheiser, CM...
Arriva il Raspberry Pi 5 da 1 GB, ma por...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:40.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v