JAVA- Gestione eccezioni
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Visualizzazione risultati da 1 a 11 di 11

Discussione: JAVA- Gestione eccezioni

Cambio titolo
  1. #1
    Ku Nuk Mak Sauro Tuk Tuk L'avatar di chinook
    Registrato il
    11-02
    Località
    Micio Camping!!
    Messaggi
    13.396

    JAVA- Gestione eccezioni

    Allora, sto cercando di rimparare il java, ed ho iniziato con questo esercizio.


    Definite una classe Account che modella un conto bancario e offre i
    seguenti metodi.
    void preleva(double amount) throws OutOfMoneyException: preleva
    dal conto una somma pari ad amount, se la somma `e disponibile, ed
    aggiorna il saldo. Altrimenti non modifica il saldo e lancia l’eccezione.
    void deposita(double amount): versa sul conto una somma pari ad
    amount e aggiorna il saldo.
    double disponibilita(): restituisce l’ammontare disponibile per il prelievo,
    che corrispondente al valore corrente del saldo.
    Definite i campi (e gli eventuali metodi ausiliari) che ritenete necessari per realizzarele funzionalita descritte. Assicuratevi che la classe provveda correttamente all’inizializzazione delle proprie istanze, e scegliete in modo opportuno i livelli di accessibilit`a di metodi e campi.
    Definite l’eccezione outOfMoneyException come eccezione checked.


    Io ho fatto

    Codice:
    public class Account{
          double saldo;
          void preleva(double amount) throws outOfMoneyException{
             try {
                   saldo=saldo-amount;
                 } catch (OutOfMoneyException e) {
    
                 }
            }
    
           void deposita(double amount) {}
    
           void disponibilita() {}
    Cosa devo scrivere dentro il catch?


    Poi ho creato una classe OutOfMoneyException

    Codice:
    public class OutOfMoneyException extends Exception {
    
       /* Questo costruttore associa all'oggetto una stringa vuota. Il nome dell'eccezzione e l'eventuale stringa possono essere recuperati inovcando sugli oggetti eccezione il metodo toString()*/
    
      public OutOfMoneyException() {super(); }           // costruttore default
    
      /* Questo costruttore permette di associare a questi oggetti una stringa, che descrive la ragione per cui l'eccezzione è stata lanciata */
    
      public OutOfMoneyException(String s) {
        super(s)
         }
        
    }
    Beh che diavolo devo metterci dentro? Come fa a sapere che il mio errore da gestire è quando amount è superiore di saldo? Dove devo scriverlo?

    AIUTO! non mi ricordo più niente di java!!

  2. #2
    N Y A N ! L'avatar di Iron84
    Registrato il
    04-05
    Località
    Ferrara (provincia)
    Messaggi
    6.131
    il try-catch non va dentro alla classe Account, quello che deve fare Account è generare e lanciare una nuova OutOfMoneyException nel caso si cerchino di prelevare più soldi di quanti ve ne siano disponibili.

    Codice:
    if (amount > saldo) throw new OutOfMoneyException();
    l'eccezione sarà gestita nel modo opportuno con un try-catch da chi userà Account (ignorare l'evento, segnalarlo all'utente, registrarlo in un file di log, etc etc).

  3. #3
    [Nesly_R]
    Ospite
    il metodo preleva se lancia un'eccezzione non vam esso in un try/catch ma di questo si occuperà colui che userà la tua classe....nel tuo caso devi fare smeplicemente:

    Codice:
    public void preleva(double amount) throws outOfMoneyException
    {
       if (amount > this.saldo)
          throw new outOfMoneyException;
       else
          this.saldo = this.saldo - amount;
    }
    questo è un metodo che lancia un eccezione nel caso si cerchi di prelevare un quantità maggiore di quella disponibile nel conto bancario. l'eccezione non è gestita direttamente dal metodo che la lancia ma la rilancia al metodo chiamante....quindi chi userà il metodo dovrà preoccuparsi o di rilancare a sua volta l'eccezione o di gestirla.

    p.s. i nomi delle classi vanno scritte con la prima lettera maiuscola quindi OutOfMoneyException

  4. #4
    Ku Nuk Mak Sauro Tuk Tuk L'avatar di chinook
    Registrato il
    11-02
    Località
    Micio Camping!!
    Messaggi
    13.396
    E dove devo mettere try and catch?

  5. #5
    [Nesly_R]
    Ospite
    dipende.....credo che nel tuo caso vada bene nel metodo main
    quindi sarà:
    Codice:
    public static void main(String[] args)
    {
       Account a = new Account();
       ......
       ......
       try
       {
          a.preleva(valore);
       }
       catch (OutOfMoneyException exception)
       {
          fai qualcosa per gestire l'errore
       }
       .........
       .........
    }

  6. #6
    Ku Nuk Mak Sauro Tuk Tuk L'avatar di chinook
    Registrato il
    11-02
    Località
    Micio Camping!!
    Messaggi
    13.396
    Quindi se si verifica un'eccezione in preleva, essa la rilancia al main che attraverso il catch la gestisce?

    Ma allora il file OutOfMoneyException a che serve?

  7. #7
    [Nesly_R]
    Ospite
    Citazione chinook
    Quindi se si verifica un'eccezione in preleva, essa la rilancia al main che attraverso il catch la gestisce?

    Ma allora il file OutOfMoneyException a che serve?
    serve per creare oggetti che hanno informazioni relative all'eccezione....come quelle che vengo stampa quando esegui un programma e parte qualche eccezzione perchè magari sei uscito fuori da un array ecc.
    nel tuo caso puoi costruire l'eccezione passando al costruttore una stringa la quale verrà visualizzata su console nel caso in cui l'eccezione non venga gestita.

  8. #8
    Ku Nuk Mak Sauro Tuk Tuk L'avatar di chinook
    Registrato il
    11-02
    Località
    Micio Camping!!
    Messaggi
    13.396
    Ok grazie!

  9. #9
    java is forever
    Ospite
    Sto collegato al forum 20 ore al giorno e non succede nulla. Esco io ed ecco che qualcuno posta qualcosa su java


  10. #10
    [Nesly_R]
    Ospite
    Citazione java is forever
    Sto collegato al forum 20 ore al giorno e non succede nulla. Esco io ed ecco che qualcuno posta qualcosa su java

    sono quelle 4 ore che ti fregano

  11. #11
    Ku Nuk Mak Sauro Tuk Tuk L'avatar di chinook
    Registrato il
    11-02
    Località
    Micio Camping!!
    Messaggi
    13.396
    Citazione java is forever
    Sto collegato al forum 20 ore al giorno e non succede nulla. Esco io ed ecco che qualcuno posta qualcosa su java

    Non preoccuparti, chiederò sicuramente altre cose

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •