Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: [JAVA] Gestione errori

  1. #1
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568

    [java] gestione errori

    ho un grosso dubbio sulla gestione di errori...

    mettiamo che devo eseguire 2 differenti operazioni in cascata e su 2 classi diverse, ad esempio la copia BAK di un files e se questa riesce, la scrittura di una nuova riga sull'originale..

    CLASSE 1
    copia del file

    CLASSE 2
    aggiunta riga su un file

    CLASSE PRINCIPALE
    chiamata funzione copia classe 1
    chiamata funzione aggiunta riga classe 2
    segnalazione eventuali errori

    come la fareste ???

    perchè io metto in ogni funzione un boolean di ritorno e poi lavoro su quello...

    CLASSE 1
    try{
    copia del file
    return true
    }catch(Exception e){
    return false
    }


    CLASSE 2
    try{
    aggiunta riga su un file
    return true
    }catch(Exception e){
    return false
    }

    CLASSE PRINCIPALE
    boolean operazioneRiuscita = false
    operazioneRiuscita = chiamata funzione copia classe 1
    if operazioneRiuscita = true{
    operazioneRiuscita = chiamata funzione aggiunta riga classe 2
    }
    if operazioneRiuscita = false{
    segnalazione che ci sono stati errori
    }

    funziona sicuro, ma fa veramente schifo come ottimizzazione del codice !!!!!!!!!!!!!!!!
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Una "miglioria" nella struttura del codice:
    codice:
    if (!chiamata_funzione_classe1) {
       // Messaggio errore: la prima funzione non è andata a buon fine
    } else {
       if (!chiamata_funzione_classe2) {
          // Messaggio errore: la seconda funzione non è andata a buon fine
       }
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568

    ..io però credevo ci fosse un modo per catturare l'eccezione...

    qualcosa del tipo che la CLASSE 1 e la CLASSE 2 catturano un errore, lo stesso errore, come se si trovassero entrambe tra un try/catch...

    e pensavo che questa gestione si acesso utilizzando un throw Excepion classeErrorePersonalizzata...

    mi aiutate a far chiarezza su sta cosa ???
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Certo... puoi anche far lanciare delle eccezioni. A questo punto, però, è inutile far ritornare true/false ai metodi.

    Semplicemente nel blocco catch delle due classi, inserisci un'istruzione di questo tipo:
    codice:
    throw new NomeTuaEccezione(...);
    e nella classe principale inserisci la chiamata ai due metodi delle classi in un blocco try/catch che recupera l'eccezione.

    Sarebbe bello che ciascuna delle due classi lanciasse una eccezione di tipo diverso. La classe 1 lanciasse ad esempio l'eccezione CopiaException e la classe 2 lanciasse l'eccezione AggiornaException entrambe derivate da TuaException. A questo punto il codice diventerebbe:
    codice:
    try {
       classe1.metodo();
       classe2.metodo();
    } catch (TuaException te) {
       System.out.println( te );
    }
    e nelle classi:
    codice:
    try {
       copia di backup
    } catch (Exception e) {
       throw new CopiaException("Errore nella copia backup"
    }
    
    ...
    
    try {
       aggiornamento
    } catch (Exception e) {
       throw new AggiornamentoException("Errore nell'aggiornamento"
    }
    Entrambe CopiaException e AggiornamentoException dovrebbero ereditare da TuaException.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    fichisssimo !!!!!!
    però... ...

    mi fai un esempio di classe TuaException e di CopiaException ???
    non saprei cosa scriverci dentro !!!!!!!!!!!!!!
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  6. #6
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    up
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  7. #7
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    perchè nessuno mi risponde... son 2 giorni che piango su sta cosa !!!
    non trovo in rete nessuna risposta a sta domanda..
    Vi prego aiutatemi !!!!
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    codice:
    public class MiaException extends Exception /* o qualunque altro tipo di eccezione che ti pare più consono */ {
      public MiaException() {
        super();
      }
      public MiaException (String err) {
        super(err);
      }
    }
    Saprai tu in che caso i tuoi metodi lanceranno il tuo nuovo tipo di eccezione...
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    e la classe copiaException è giusta così ??

    codice:
    public class CopiaException extends MyException {
    	
    	public CopiaException() {
    		super("Eccezione copia");
    	}
    	
    	public CopiaException(String str) {
    		super(str);
    	}
    	
    	public String toString() {
    		return getMessage() + ": errore copia";
    	}
    	
    }
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Troppa grazia!

    Bastava:

    codice:
    public class CopiaException extends MyException {	
    	public CopiaException() {
    		super();
    	}
    	
    	public CopiaException(String str) {
    		super(str);
    	}	
    }
    il metodo toString c'è già in Exception (da cui viene MyException)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.