Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [JAVA] Dubbietto su effetti della clausola finally

    A lezione presi questi appunti ma ora non mi ricordo più il perchè di quello che ho scritto doh :mc:

    Se ho un codice del tipo (molto sommario e parziale):

    Una classe Base:

    codice:
    public Class Base{
    	public Base throws BaseException{		// Il costruttore potrebbe sollevare una BaseException di tipo checked
    		.....
    		.....
    		.....
    	}
    }
    ed una classe UsaBase:

    codice:
    public Class UsaBase{
    	
    	Base b;					// Dichiara una variabile di tipo Base
    	
    	public UsaBase(){		// Costruttore
    		try{
    			b = NewBase;	// Nel try perchè il costruttore di Base potrebbe sollevare una BaseException
    		}catch(BaseExcepion e){System.out.println("Nel Catch");}
    		finally{System.out.println("Nel finally");}
    		
    		System.out.println("Nel costruttore");
    	}
    	
    	public static void main(...){
    		UsaBase x = new UsaBase();
    	}
    	
    }
    Sugli appunti ho scritto: il messaggio del catch non viene visualizzato perchè l'eccezione non è mai sollevata e non si entra mai nel blocco finally....

    Perchè sta cosa

    Il costruttore di Base potrebbe sollevare una BaseException.

    Nel metodo main dichiato una variabile x di tipo UsaBase e la creo --> viene invocato il costruttore della classe UsaBase che prova ad eseguire il blocco try catch assegnando a b di tipo Base l'eventuale riferimento ad un nuvo oggetto istanza di Base...ma il costruttore di Base può sollevare l'eccezione...quindi secondo me se il costruttore di Base solleva l'eccezione nel costruttore di UsaBase viene catturata e stampato: "Nel Catch" e "Nel Finally"

    o c'è qualche cosa che mi sfugge?

    Grazie
    Andrea

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813
    credo che tu abbia un po di confusione in testa.

    try
    {
    }
    catch{}
    finally{}

    try -> prova a fare qualcosa
    catch -> cattura eventuali errori che si sono presentati nel blocco try
    finally -> esegui questo blocco sempre e comunque

    il blocco finally, indipendentemente dal lancio o meno di una qualunque eccezione, viene eseguito

    Sugli appunti ho scritto: il messaggio del catch non viene visualizzato perchè l'eccezione non è mai sollevata e non si entra mai nel blocco finally....
    SBAGLIATO!
    Se il messaggipo del catch non viene visualizzato è vero che l'eccezione non è stata sollevata, ma sul finally ci va sempre e comunque...rivedi questi appunti...

    spero di esserti stato utile
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Re: [JAVA] Dubbietto su effetti della clausola finally

    Originariamente inviato da AndreaNobili
    codice:
    public Class UsaBase{
    	
    	Base b;					// Dichiara una variabile di tipo Base
    	
    	public UsaBase(){		// Costruttore
    		try{
    			b = NewBase;	// Nel try perchè il costruttore di Base potrebbe sollevare una BaseException
    		}catch(BaseExcepion e){System.out.println("Nel Catch");}
    		finally{System.out.println("Nel finally");}
    		
    		System.out.println("Nel costruttore");
    	}
    	
    	public static void main(...){
    		UsaBase x = new UsaBase();
    	}
    	
    }
    Spero che nessuno a lezione abbia mai scritto quella cosa in rosso... VVoVe:


    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

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 © 2025 vBulletin Solutions, Inc. All rights reserved.