Gestione delle Eccezioni, but NO Error

di il
5 risposte

Gestione delle Eccezioni, but NO Error

Ciao a Tutti,
sono sia nuovo del forum che da qualche mese circa sul mondo Java. Sono quindi alle prime armi con il linguaggio, anche se ho anni di esperienza nella programmazione (soprattutto batch). Ho un piccolo problema con un'interfaccia grafica che ho creato, per il calcolo delle dimensioni Area e Perimetro. Devo gestire eventuali eccezioni, del tipo le due JTextField accettano solo dei dati di tipo double, ma se inserisco delle parole in entrambe le caselle editor, al momento di calcolarne Area e Perimetro, l'interfaccia grafica non dà nessun errore in fase di compilazione…

Non capisco come mai…non capisco cosa possa essere che non genera proprio nulla d'errore...

PS: Uso l'IDE Eclipse for Enterprise Java Developers, Version: 2019-06 (4.12.0).

Potete aiutarmi per favore.

Ciao e grazie.
Andrea

5 Risposte

  • Re: Gestione delle Eccezioni, but NO Error

    iPedons ha scritto:


    Devo gestire eventuali eccezioni, del tipo le due JTextField accettano solo dei dati di tipo double, ma se inserisco delle parole in entrambe le caselle editor, al momento di calcolarne Area e Perimetro, l'interfaccia grafica non dà nessun errore in fase di compilazione…
    Infatti non è una questione di "compilazione" ma di una eccezione che avviene a runtime. Quando usi Double.parseDouble(stringa) esso può lanciare NumberFormatException se la stringa è "malformata".
    Quindi devi semplicemente usare un try-catch per catturare NumberFormatException. Poi cosa fare nel catch ... dipende. Dipende anche dal punto/contesto in cui sei.

    Mostra eventualmente del codice, così si vede meglio.
  • Re: Gestione delle Eccezioni, but NO Error

    Sì lo so che è un eccezione che devo gestire, sto appunto cercando di gestire eventuali eccezioni, simulando un falso inserimento di dati in input. Ho parzialmente risolto, perché NON avevo abilitato la scheda "Console" nell'IDE Eclipse che sto utilizzando, per vedere eventuali errori prodotti. Ora che ho riscontrato quanto volevo…(ecco la prima parte di error log)

    Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "ciccio"
    at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
    at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
    at java.lang.Double.parseDouble(Unknown Source)
    at testswing.CalcolatriceRettangoli$2.actionPerformed(CalcolatriceRettangoli.java:72)
    […]

    ...provando ad inserire appunto il try catch, non appena dichiaro la classe java.lang.NumberFormatException, me la segna come errore, perché non è innanzitutto importato il package java.lang.*
    Andando ad inserire tale import, mi viene segnalato un Warning "The import java.lang is never used". Ma che ci posso fare se non o dovuto utilizzare nulla che facesse parte di quel package? Come posso proseguire la mia gestione delle eccezioni ora con 1 Error nel catch ed un Warning di una Classe di cui voglio gestirne appunto l'eccezione?

    Ciao e Grazie.
    A.
  • Re: Gestione delle Eccezioni, but NO Error

    iPedons ha scritto:


    me la segna come errore, perché non è innanzitutto importato il package java.lang.*
    Andando ad inserire tale import, mi viene segnalato un Warning "The import java.lang is never used".
    Il package java.lang è già sempre importato per default dal compilatore. Non bisogna (non serve) importarlo esplicitamente.

    Es. (abbozzato):
    public void actionPerformed(ActionEvent e) {
        double larghezza;
    
        try {
            larghezza = Double.parseDouble(fieldLarghezza.getText());
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, "Larghezza inserita non valida!", "ERRORE", JOptionPane.ERROR_MESSAGE);
            return;
        }
    
        // ..... similare per es. altezza
    
        // usa larghezza/altezza
    }
  • Re: Gestione delle Eccezioni, but NO Error

    GRAZIE! Davvero GRAZIE! Ricordavo il fatto che fosse importato di default, ma vedendo segnalato nell'editor l'errore (ancora prima di inserire il carattere "e") ho pensato cmq di dichiarare l'import. Ad ogni modo ho un'altra domanda : come mai appunto dopo aver dichiarato nel blocco catch java.lang.NumberFormatException devo (o si deve) inserire il carattere "e" o altro carattere/parola ? Non mi è chiaro…

    Ciao e grazie ancora.
    A.
  • Re: Gestione delle Eccezioni, but NO Error

    "e" è l'oggetto e NumberFormatException il tipo. e lo puoi usare per informazioni addizionali
Devi accedere o registrarti per scrivere nel forum
5 risposte