Eccezioni in Java

di il
4 risposte

Eccezioni in Java

Vorrei un paio di chiarimenti sull'argomento e sapere se ciò che so è corretto. Nel caso cui abbia detto una stupidaggine o qualcosa di non proprio preciso correggetemi.

Throwable: superclasse delle eccezioni.
Error e Exception le due sottoclassi principali. Differenze:

Error -> Errori fatali, impossibili da gestire. Ad esempio? Esaurimento delle risorse del sistema?
Exception -> Errori controllabili. Possibili da gestire per il programmatore con il blocco try\catch.

Il try riguarda il blocco di codice da eseguire e il catch cattura l'eventuale eccezione.
La clausola finally? Non ho ben capito la sua utilità.

Tra le sottoclassi di Exception è presente una che genera eccezioni incontrollabili: RunTimeException.
Perché? E soprattutto: in quale caso vengono generate le seguenti eccezioni? ArithmeticException, NullPointerException, IndexOutOfBoundsException?

Le altre sottoclassi di Exception, eccezioni possibili da controllare: ClassNotFoundException, IOException, AWTExcpetion, RuntimeException. Quand'è che vengono lanciate queste eccezioni?

L'eccezione "NumberFormatException" è l'unica in cui mi sono imbattuto al momento, di quale sottoclasse fa parte?

4 Risposte

  • Re: Eccezioni in Java

    Carmine2898 ha scritto:


    Throwable: superclasse delle eccezioni.
    Sì, superclasse di TUTTE le eccezioni.

    Carmine2898 ha scritto:


    Error e Exception le due sottoclassi principali.
    Sì, le uniche due sottoclassi dirette.

    Carmine2898 ha scritto:


    Error -> Errori fatali, impossibili da gestire. Ad esempio? Esaurimento delle risorse del sistema?
    Non "impossibili" in senso stretto/assoluto. Ma comunque altamente difficili da trattare. Nel senso che specialmente per certi Error, se capitano, è altamente improbabile riuscire a "recuperare" il filo corretto della esecuzione senza altre conseguenze "catastrofiche".

    Carmine2898 ha scritto:


    Exception -> Errori controllabili. Possibili da gestire per il programmatore con il blocco try\catch.
    Ok

    Carmine2898 ha scritto:


    Il try riguarda il blocco di codice da eseguire e il catch cattura l'eventuale eccezione.

    Carmine2898 ha scritto:


    La clausola finally? Non ho ben capito la sua utilità.
    Serve ad eseguire un blocco di codice SEMPRE, comunque, in qualunque caso, sia che il blocco try completi normalmente, sia che ci sia stata una eccezione nel blocco try catturata oppure NO da uno dei catch.

    Carmine2898 ha scritto:


    Tra le sottoclassi di Exception è presente una che genera eccezioni incontrollabili: RunTimeException.
    Non "incontrollabile". Ma "non controllato" nel senso che il compilatore NON applica alcun controllo e non impone alcunché al programmatore, né di catturarle, né di dichiararle (con il throws)

    Carmine2898 ha scritto:


    Perché? E soprattutto: in quale caso vengono generate le seguenti eccezioni? ArithmeticException, NullPointerException, IndexOutOfBoundsException?
    Ci sono eccezioni come NullPointerException che possono potenzialmente essere lanciate ovunque viene usato un reference per accedere ad un campo/metodo. Se fosse "checked" forzerebbe il programmatore a farsi continue domande su come gestirla e/o dichiararla. Sarebbe uno stillicidio ....

    Ecco perché queste sono unchecked. Se capitano ... generalmente denotano un "baco". Che va corretto, ovviamente.

    Carmine2898 ha scritto:


    Le altre sottoclassi di Exception, eccezioni possibili da controllare: ClassNotFoundException, IOException, AWTExcpetion, RuntimeException. Quand'è che vengono lanciate queste eccezioni?
    In casi ben specifici. IOException quando si usano le classi di I/O. ClassNotFoundException specialmente quando si usa la reflection (ma anche in altri contesti).

    Carmine2898 ha scritto:


    L'eccezione "NumberFormatException" è l'unica in cui mi sono imbattuto al momento, di quale sottoclasse fa parte?
    Quando hai dubbi di questo tipo, consulta la documentazione javadoc.
    Ad esempio: https://docs.oracle.com/javase/8/docs/api/java/lang/NumberFormatException.html
    All'inizio vedi benissimo la gerarchia.
  • Re: Eccezioni in Java

    Spero che questo sia il tread giusto.
    Io sto scrivendo un programma con un ciclo while che ha uno swich all interno fin quando non do il comando termina non dovrebbe terminare ma quando le eccezioni vengono lanciate il programma si blocca , ho provato sia con un try/catch sia con if/else .
    Mi potete dare qualche dritta ?
    grazie mille ciao
  • Re: Eccezioni in Java

    stev809 ha scritto:


    Spero che questo sia il tread giusto.
    Direi di no.

    stev809 ha scritto:


    Io sto scrivendo un programma con un ciclo while che ha uno swich all interno fin quando non do il comando termina non dovrebbe terminare ma quando le eccezioni vengono lanciate il programma si blocca
    Posta del codice (in altra discussione), altrimenti non si capisce il problema.
  • Re: Eccezioni in Java

    Fa niente ho risolto il problema da solo grazie lo stesso
Devi accedere o registrarti per scrivere nel forum
4 risposte