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

Discussione: [JAVA]Eccezioni

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    143

    [JAVA]Eccezioni

    Salve a tutti. Ho creato una classe File, ogni metodo deve gestire l'eccezione, ho demandato il tutto alla console evitando i blocchi try-catch per semplicità, quindi mi basta mettere nell'intestazione del metodo anche il codice
    codice:
    throws IOException
    Il dubbio che ho è questo:
    esiste una classe Menu che ha alcuni metodi che richiamano i metodi della classe File, quindi dovrò fare il rilancio delle eccezioni, solo che i metodi di Menu accettano solo
    codice:
    throws Exception
    invece del più specifico
    codice:
    throws IOException
    Per caso è dovuto al fatto che ho saltato la struttura try-catch e le specifiche prevedono che i metodi chiamanti abbiano questa segnatura?

  2. #2
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    se un metodo nella firma ha throws IOException, il metodo o il costruttore che lo chiama deve anch'esso laciare IOExeption o qualche altra classe di più alto livello nella gerarchia(come Exception o Throwable).

    Specificare il tipo di eccezione che potrebbe essere lanciata va fatto fino a quando non la si cattura con un try-catch, se tu hai deciso di delegare questo compito alla console automaticamente, tutti i metodi, fino al main, che chiamano un metodo che potrebbe lanciare un eccezione devono avere throws Eccezione_in_questione_o_super_classe_della_eccezi one.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  3. #3
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Non dipende da quello...semplicemente chi ha definito la classe Menu ha stabilito che i suoi metodi possono lanciare una generica eccezione e non solo un'eccezione di input output; in questo modo all'interno del metodi di Menu puoi invocare metodi che lanciano qualsiasi eccezione senza doverti preoccupare di gestirle.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    143
    Infatti è quello che pensavo anche io, purtroppo però se invece di mettere throws Exception nel metodo di Menu io vado a mettere, come uno pensa sia ovvio, throws IOException, non compila dicendo:
    cannot find symbol class IOException.

    Ciao

  5. #5
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    importa il package io:

    import java.io.*;

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    143
    Ciao anx721, in effetti io ho definito la classe Menu per rilanciare le IOException, ho pe esempio un metodo che ha una sola riga, chiama un metodo di File, per cui può solo lanciare una IOException


  7. #7
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    Originariamente inviato da anx721
    Non dipende da quello...semplicemente chi ha definito la classe Menu ha stabilito che i suoi metodi possono lanciare una generica eccezione e non solo un'eccezione di input output; in questo modo all'interno del metodi di Menu puoi invocare metodi che lanciano qualsiasi eccezione senza doverti preoccupare di gestirle.
    quello che intendevo io era:

    codice:
    public void metodo() throws IOException {
    }
    
    //metodo2 chiama metodo, quindi potrebbe lanciare IOException
    public void metodo2() throws IOException {//o Exception o altre super 
    //classi di IOException
    
    //oppure lo si mette tra un try-catch
    try {
    metodo();
    } catch(IOException a) {//o altre super classi
    }
    }
    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  8. #8
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Il mio 'Non dipende da quello..' era riferito al primo messagio del thread

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    143
    Si, ora funziona, grazie anx721.
    Un'ultima cosa, se dicessi throws EOFException nei metodi di File, dovrei mettere:
    codice:
    throws IOException, EOFException
    Come mai?

    Grazie mille

  10. #10
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    perche sono eccezioni diverse e te devi dichiarere tutte le eccezioni lanciate oppure dichiari una superclasse che le comprende entrambe come Exception

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

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.