Pages: 1 [2]   Go Down
Print
Author Topic: creazione eccezione  (Read 3009 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
djjeck
Matricola
*
Offline Offline

Gender: Male
Posts: 89


Ho una donna nuda per avatar. Non c'era di meglio.


WWW
« Reply #15 on: 15-03-2009, 09:55:33 »

Questo esercizio non esiste perché in Java non si può fare nulla di simile. Forse è stato frainteso.
In questo thread stiamo parlando di una cosa assurda, che crea confusione. E io la sto prendendo troppo sul serio =)


Non c'è modo di capire che è avvenuta una moltiplicazione per 4, dopo il println.
Quando fai
System.out.println(n*4);
non resta alcuna traccia della moltiplicazione avvenuta.
Se hai già studiato IJVM, ciò che avviene a livello macchina è soltanto
ILOAD n
BIPUSH 4
IMUL
Non puoi intercettare queste istruzioni di basso livello in nessun modo, dopo che sono state eseguite.
Prima ancora del println, resta un semplice numero intero sullo stack.
Dopo il println, neppure quello.


Inoltre non avrebbe senso scrivere una cosa del genere:
Code:
System.out.println(n*4);
if(la moltiplicazione precedente era 4)
  throw new RuntimeException("moltiplicazione per 4");
Se il 4 lo stai scrivendo tu, lo sai già che c'è una moltiplicazione per 4, allora lancia l'eccezione e basta. Oppure non lo scrivere. Penso che la necessità sia di intercettare
Code:
System.out.println(a*b);
quando o a o b valgono 4.
Allora puoi fare
Code:
if((a == 4) || (b==4))
  throw new RuntimeException("tentativo di moltiplicazione per 4");
System.out.println(a*b);
Ma così stai controllando soltanto questa moltiplicazione, e bisogna farlo per ogni altra moltiplicazione nell'intero codice.


rox, intervieni e spiegaci cosa ti serve.

Se il problema ha un senso, ci sono delle soluzioni, ma sono di tipo diverso, e si studiano più in là.
  • Si può dichiarare qualche trigger in AspectJ, ma poco efficace in realtà (ingegneria del software 2).
  • Si può implementare una sandbox, ovvero un interprete JVM che fa più controlli (sicurezza).
  • Si può fare un'analisi statica del codice, dopo la compilazione, per individuare qualche caso (ma non tutti) e segnalarlo prima dell'esecuzione (compilatori? forse).
Logged
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


File reality.sys corrupted, Reboot Universe? Y/N


« Reply #16 on: 15-03-2009, 10:54:17 »

Ma da quello che ho capito io non si possono postare le soluzioni corrette agli esercizi..ma se ad esempio ho un problema con il codice, come faccio a farmi aiutare sul trovare gli errori se il codice non si può postare?
Logged

L'odrine delle lttere dnetro una praorla non è ipmortatne, la sloa cosa ipmortatne è che la pmria e l'utlima ltteera sinao nel potso giutso. Il rseto può essree in un dsiodrine più totlae e voi ptoerte smerpe lggeree sneza porblmea.
djjeck
Matricola
*
Offline Offline

Gender: Male
Posts: 89


Ho una donna nuda per avatar. Non c'era di meglio.


WWW
« Reply #17 on: 15-03-2009, 11:07:04 »

Credo che piuttosto che applicare le regole ciecamente, sia meglio comprendere e rispettare il divieto reale, ovvero quello di non fornire codice da stampare su fogliettini da portare all'esame, o da imparare a memoria.

Detto questo, potresti anche provare a postare soltanto la parte che non ti convince, invece di tutta la classe.
Spero non sia un problema, se hai un problema significa che è pure codice che non funziona... =)
Logged
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


File reality.sys corrupted, Reboot Universe? Y/N


« Reply #18 on: 15-03-2009, 11:09:40 »

ecco bè infatti 
Logged

L'odrine delle lttere dnetro una praorla non è ipmortatne, la sloa cosa ipmortatne è che la pmria e l'utlima ltteera sinao nel potso giutso. Il rseto può essree in un dsiodrine più totlae e voi ptoerte smerpe lggeree sneza porblmea.
rox
Forumista
***
Offline Offline

Posts: 633


« Reply #19 on: 18-03-2009, 18:53:38 »

vi ringrazio per le risposte.cmq da quanto ho capito io non si può creare una eccezione che viene scatenata in runtime.quindi ciò che dicevo io non lo posso fare.non è così?
Logged

Una macchina è in grado di lavorare come cinquanta uomini comuni, ma nessuna macchina può svolgere il lavoro di un uomo straordinario.
Pages: 1 [2]   Go Up
Print
Jump to: