Visualizzazione dei risultati da 1 a 10 su 10

Discussione: creazione eccezione

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    43

    creazione eccezione

    slave a tutti volevo sapere come si fa a estendere la classe Exception creando una nuova eccezione .mi spiego meglio fatta la classe vorrei creare un numero che ,preso in input un numero (per esempio 4)mi generi una eccezione aritmetica.grazie in anticipo a quanti verranno in mio aiuto.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: creazione eccezione

    Originariamente inviato da roxnsr
    slave a tutti volevo sapere come si fa a estendere la classe Exception creando una nuova eccezione .mi spiego meglio fatta la classe vorrei creare un numero che ,preso in input un numero (per esempio 4)mi generi una eccezione aritmetica.
    Innanzitutto dovresti spiegare meglio il "significato" della eccezione che vorresti creare, cioè quale è il senso e il motivo.

    E comunque tieni presente che in java.lang esiste già una eccezione ArithmeticException che tipicamente viene lanciata dalla JVM per indicare un errore durante una operazione aritmetica (il caso tipico: divisione per 0 su numeri interi). E se vuoi, nulla ti vieta di lanciarla tu in base a quale condizione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    43
    lo so!!cmq era un programma che volevo fare io per vedere se ero riuscito a capire come si faceva a creare una nuova eccezione!potresti spiegarmelo?grazie in anticipo

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da roxnsr
    lo so!!cmq era un programma che volevo fare io per vedere se ero riuscito a capire come si faceva a creare una nuova eccezione!potresti spiegarmelo?
    codice:
    public class TuaNuovaException extends Exception {
        public TuaNuovaException() {
            super();
        }
    
        public TuaNuovaException(String message) {
            super(message);
        }
    
        public TuaNuovaException(String message, Throwable cause) {
            super(message, cause);
        }
    
        public TuaNuovaException(Throwable cause) {
            super(cause);
        }
    }
    Tutto qui. Se vai a vedere la documentazione di java.lang.Exception, vedi che TuaNuovaException che ho scritto offre gli stessi tipi di costruttori di Exception. Non si è obbligati ad averli tutti e quattro!!! ... io ho fatto solo l'esempio completo. Dipende sempre dal "significato" della tua eccezione. Se in tuo metodo invochi altri metodi che possono lanciare svariate eccezioni ma vuoi che dal tuo metodo esca solo TuaNuovaException, allora in tal caso puoi incapsulare ogni eccezione dentro la tua e quindi ti saranno utili i costruttori che ricevono un Throwable.

    Altrimenti si potrebbe fare anche es.

    codice:
    public class TuaNuovaException extends Exception {
        public TuaNuovaException() {
            super("Messaggio fisso");
        }
    }
    In tal caso si presuppone che non hai bisogno di "personalizzare" in alcun modo la eccezione.

    Se extendi RuntimeException (o sua sottoclasse), la eccezione diventa "unchecked".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    43
    in pratica io volevo fare una eccezione che si scatenava appena si creava una stringa "paolo" . l'eccezione doveva restituire un messaggio "ma tu non ti chiami paolo!".capito cosa volevo fare io?spero di essere stato chiaro se potresti aiutarmi te ne sarei grato.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da roxnsr
    volevo fare una eccezione che si scatenava appena si creava una stringa "paolo" . l'eccezione doveva restituire un messaggio "ma tu non ti chiami paolo!".capito cosa volevo fare io?
    Innanzitutto le eccezioni, come dice il nome, servono per interrompere la esecuzione di un certo codice e segnalare un errore, cioè una condizione eccezionale, propagando la eccezione verso livelli più alti del programma.
    Non servono per passare banalmente delle stringhe o segnalare una qualche condizione o stato del programma!!!

    A parte questa premessa, che vuol dire "appena si creava una stringa "paolo""???

    Io creo una stringa:

    String s = new String("paolo");

    Ho creato un nuovo oggetto String che rappresenta "paolo" .... e allora??? Posso farlo in qualunque punto di un programma .... e tu cosa/dove vorresti testare???
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    43
    allora mi spiego meglio.se tu tenti di dividere un numero per 0 si scatena una eccezione.ecco io volevo fare una nuova eccezione che si scatenava non appena si tentava di stampare a video la stringa "paolo".potresti farmi una eccezione che si scatena non appena si tenta di moltiplicare un numero per 4?(un po' come quello che accade quando si tenta di dividere un numero per 0!).speriamo che finalmnente riesco a capire come funzionano queste eccezioni .

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da roxnsr
    se tu tenti di dividere un numero per 0 si scatena una eccezione.
    Per la divisione per 0 tra numeri interi sì ma è la JVM che lo verifica e lancia la eccezione se accade .... e questo in qualunque punto del programma dove ci sia una divisione tra interi. Insoma, tu in questo caso non devi testare nulla!

    Originariamente inviato da roxnsr
    ecco io volevo fare una nuova eccezione che si scatenava non appena si tentava di stampare a video la stringa "paolo".potresti farmi una eccezione che si scatena non appena si tenta di moltiplicare un numero per 4?
    Sì ma il lancio di questa tua eccezione sarebbe comunque subordinato ad un test tipicamente fatto con un costrutto "if".
    Cioè sei tu che devi testare "qualcosa" per stabilire se lanciare o no la eccezione!!!

    Non è che puoi dire es. quando si fa:

    System.out.println(unaStringa);

    se unaStringa contiene "paolo" allora lancia la eccezione ... dovrebbe essere dentro il println() per testare questa cosa .... ma ovviamente NON l'hai scritto tu questo metodo println()!.

    Vediamo il fatto della moltiplicazione per 4??? Dovresti fare un metodo:

    codice:
    public static int moltiplica(int a, int b) {
        if (a == 4 || b == 4) {
            throw new TuaEccezione("Hai moltiplicato per 4");
        }
    
        return a * b;
    }
    Ma è chiaro che dovresti sempre usare moltiplica() per fare una moltiplicazione ... ora: ha senso?? Io direi di no.

    Originariamente inviato da roxnsr
    speriamo che finalmnente riesco a capire come funzionano queste eccezioni .
    Per il momento mi sembra che sei ancora lontano dall'aver raggiunto il "nocciolo" della questione sulle eccezioni ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Vuoi esempio più reale e utile?? Immagina di voler fare un metodo che restituisce un array di lunghezza N che contiene valori casuali e quel N è passato come argomento al metodo. Il metodo avrà quindi un parametro es. int numValori e visto che numValori lo usi ovviamente per istanziare l'array, il suo valore non deve essere negativo (altrimenti la JVM lancerebbe in automatico una eccezione particolare che è NegativeArraySizeException).

    Ora ... tu potresti testare prima questa cosa, cioè se il valore è negativo, e lanciare tu una eccezione più utile o comunque più significativa.

    codice:
    public static int[] generaNumeriCasuali(int numValori) {
        if (numValori < 0) {
            throw new IllegalArgumentException("numValori non puo` essere minore di zero");
        }
    
        int[] numeri = new int[numValori];
    
        Random r = new Random();
        for (int i = 0; i < numValori; i++) {
            numeri[i] = r.nextInt();
        }
    
        return numeri;
    }
    Più chiaro ora?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    43
    grazie comunque ma ciò che volevo fare io era che mi desse l'eccezione nel main appena tentavo di moltiplicare un numero per 4!mamma mia che confusione e per quanto ne so se non riesco a capire le eccezioni non posso gestire degli stream!!!aiutoooo!!!

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.