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

    Asserzioni ed eccezioni

    Non ho ben capito quando, perchč usare, e a cosa sevono le asserzioni.
    Perchč se gią posso gestire le eccezioni esistono le asserzioni? A cosa si riferiscono?
    Perchč e quando usarle?

    Servono per caso per dei controlli generici?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Sono due cose un tantino differenti (almeno per me)
    L'eccezione č un meccanismo di segnalazione e di eventuale recupero (quando possibile) dell'esecuzione.
    Sono nate per gestire situazioni in cui l'anomalia, se correttamente gestita, non porta alla chiusura del programma.
    Pensa di trovarti in un programma di una certa entitą e lavori con file. supponi di non trovare il file. Quella specifica funzione puņ non lavorare senza il file, ma l'itnero programma ha senso senza il file e puņ continuare. Quindi se gestisci l'eccezione ti limiti a comunicare l'assenza del file, ma non termini in malo modo il programma.
    Un'asserzione invece č un test, un qualcosa che deve valere true o false. Aiutano a scoprire errori, in quanto il valore false indica un'anomalia nel programma in esecuzione.
    E' in generale usata soprattutto per i test (junit ne fa pesante uso), poco in produzione.

    Ricorda l'eccezione indica all'utente un'anomalia, l'asserzione documenta il programma (in genere al developer). In genere l'asserzione indica cose che dovrebbero essere note, ma in relazione al programmatore, non all'utente. In sostanza cambia il soggetto a cui si indirizzano: l'eccezione allo user, l'assert al developer

    Spero la differenza sia chiara

  3. #3
    Mi faresti un esempio di...un metodo...dove per esempio si usa un' asserzione?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    puoi fare una roba del genere

    codice:
     public static void main( String args[] ){
        Scanner scanner = new Scanner( System.in );         
        System.out.print( "Enter a number between 0 and 20: " );
        int value = scanner.nextInt();
        assert( value >= 0 && value <= 20 ) : "Invalid number: " + value;
        System.out.println( "You have entered " +  value );
     }
    avrai una AssertException se sei fuori dal range

  5. #5
    Mh...penso di avere capito...ma a me non funziona....

    codice:
    public class Prove
    {
    	public static void main(String [] args)
    	{
    		int []a={1,5,4,6,8,7,0};
    		stampa(a, 10);
    		
    	}
    	
    	public static void stampa(int [] array, int i)
    	{
    		assert (i<array.length) : "FuoriRange";
    		System.out.println(array[i]);
    	}
    }
    Perchč mi lancia l'eccezione ArrayIndexOutOfBounds e non mi dą quello che ho specificato nell'asserzione?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    di default le assert sono disabilitate, dovresti abilitarle prima dell'esecuzione.
    per eseguire con le assert dovresti fare
    codice:
    java -ea Prove

  7. #7
    Quindi da dos giusto?

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    no, se usi eclipse o netbeans dovresti cambiare le opzioni (mettendo il parametro -ea tra le opzioni di run)

    anche da riga di comando male non fa (in pratica quando premi run non fai altro che fare una chiamata a java mainclass

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.