Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774

    [java] ritorno da eccezione

    ciao a tutti...
    vorrei porvi un problema:
    come si fa a rientrare da un eccezione in un punto specifico del codice?
    se ad esempio faccio inserire un valore ad un utente, se questo è sbagliato non mi basta stampare un errore e proseguire ma vorrei dargli la possibilità di reinserirlo.
    la cosa si potrebbe fare con un while ma in questo caso ho un programma con diversi input e vorrei gestire l'eccezione una sola volta rimandando l'esecuzione del codice al punto che specifico quando lancio l'eccezione (non so magari passando un parametro)
    sarà poi nel ramo catch che rimanderò il codice al punto "di rientro" specificato dall'eccezione che lancio.
    è possibile?
    grazie
    citrus

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    Azz, errore

  3. #3
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    ??

  4. #4
    perchè non provare a mettere il try-catch all'interno del do-while?
    cioè tipo:
    codice:
    do
    {
      flag = false;
      try {}
      catch(exception e)
      {System.out.println (); flag=true}
    }
    while(flag==true)
    www.matteosteri.it

  5. #5
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    mmmmh, potrebbe essere una soluzione!
    però così dovrei ripetere la gestione della stessa eccezione più e più volte quando invece (se non è troppo incasinato) potrei farlo una volta sola.
    mi spiego:
    ho uno switch ed in ciascuno dei case potrebbe verificarsi la stessa eccezione!
    con il metodo che tu giustamente mi proponi potrebbe anche funzionare però così dovrei gestire la stessa eccezione singolarmente in ogni case.
    invece io vorrei gestirla un unica volta su tutto lo switch ed essere poi in grado di far tornare l'esecuzione al case che ha generato l'eccezione.
    pensi sia possibile o sto solo vaneggiando?
    grazie
    citrus

  6. #6
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    un altra cosa che non ho specificato è che non sono i "case" a generare le eccezioni ma dei metodi richiamati al loro interno.
    e qui la cosa si complica perhè lo stesso metodo può essere richiamato in due case diversi.
    quindi a me servirebbe proprio di memorizzare il punto in cui viene effettivamente "a galla" l'eccezione e riprendere da li dopo averla gestita.

  7. #7
    Rientri sempre nello stesso case con la soluzione che ti è stata suggerita se la variabile che usi per lo switch non cambia valore.
    Se cambia puoi salvarne il contenuto in una variabile temporanea per poi ricopiarcela .
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  8. #8
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    scusa... temo di non aver capito...
    quindi non posso gestire un unica eccezione su tutto lo switch anzichè su ogni singolo case?
    in particolare non ho capito il discorso sulla varibile.
    grazie ancora
    citrus

  9. #9
    SI che puoi gestire l'eccezzione sul tutto lo switch

    codice:
    boolean flag=true;
    do{
    try{
    switch(a){
    case .. metodo1();
    case ...metodo2();
    case ...metodo1();
    ....
    ....
    }
    }catch(Exception r){
    if(gestibile)gestisci();
    else
    flag=false;}
    }while(flag);
    metodo1 supponiamo lanci un eccezione , tu la gestisci
    e riprendi il ciclo dallo switch.
    Se la variabile a , supponendo che conteneva la condizione che ti ha fatto entrare nel primo case , non cambia , tu rientrerai sempre nel primo case .
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  10. #10
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    Originariamente inviato da Zero-2
    SI che puoi gestire l'eccezzione sul tutto lo switch

    codice:
    boolean flag=true;
    do{
    try{
    switch(a){
    case .. metodo1();
    case ...metodo2();
    case ...metodo1();
    ....
    ....
    }
    }catch(Exception r){
    if(gestibile)gestisci();
    else
    flag=false;}
    }while(flag);
    metodo1 supponiamo lanci un eccezione , tu la gestisci
    e riprendi il ciclo dallo switch.
    Se la variabile a , supponendo che conteneva la condizione che ti ha fatto entrare nel primo case , non cambia , tu rientrerai sempre nel primo case .
    è vero, però dipende da dove valorizzo la varibile su cui poi si basa lo switch giusto?
    perchè se questa sta fuori il "do" allora funziona come dici tu, solo che va all'infinito, nel senso che poi non si può più uscire dal case (perchè la variabile non può più essere modificata).
    se invece la valorizzazione sta dentro allora non rientra più nel case che ha generato l'eccezione ma mi richiede di rivalorizzare la variabile.
    dico bene? (ho provato e mi succede così!)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.