Visualizzazione dei risultati da 1 a 4 su 4

Discussione: MVC e error handling

  1. #1

    MVC e error handling

    Ho un dubbio: quali sono le best practice per l'error handling in un'applicazione MVC?

    Ad esempio, diciamo che nella mia View l'utente dragga&droppa qualcosa da qualche parte. Al momento del drop un metodo viene chiamato sul controller, che traduce la chiamata in un'azione sul model. Il model a questo punto deve essere aggiornato, riflettendo il cambiamento che l'utente ha eseguito tramite la GUI.

    Nell'aggiornarsi pero' viene rilevata una condizione di errore, ad esempio l'oggetto droppato non puo' essere spostato perche' e' gia' presente un oggetto con lo stesso nome nella destinazione. A questo punto l'utente deve essere notificato dell'errore in modo che possa eseguire le necessarie azioni, tipicamente forzare l'azione comunque o cancellarla.

    Se invece il cambiamento va a buon fine la View viene notificata e basta, magari usando il metodo update di Observer.

    Ma qual e' il modo migliore per notificare una situazione di errore che, come in questo caso previene il model dal proseguire finche' l'utente non ha preso una decisione su che azione compiere?

    Grazie
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    non so se è giusto, ma io direi che se qualcosa non va sollevi un'eccezione da te definita, la view non fa altro che gestirla

  3. #3
    Non sono d'accordo. Le eccezioni sono per appunto casi eccezionali.

    Se io verifico che un file non sia gia' esistente, o che un IP non sia gia' assegnato non credo che genererei un'eccezione.

    Pero' in ogni caso forse ho capito come fare.

    Esempio:

    codice:
    //Model
    //...
    
    public void setIPAddress (String ip, boolean forceDuplicate) {
      if (alreadyExists(ip) && !forceDuplicate) {
        notifyError ("Duplicate IP"); //e questa chiamata arriva alla GUI
      }
      else {
        assignIP (ip);
        setChanged();
        notifyObservers(this); //e questa notifica arriva alla GUI che eventualmente puo' mostrare un messaggio di successo ed essere ridisegnata per riflettere le modifiche al modello.
      }
    }
    Se poi un errore viene notificato e l'utente decide di assegnare l'IP anche se duplicato allora lo stesso metodo verra' richiamato dal controller con forceDuplicate settato a true.

    ha senso?
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ha senso, non so come realmente viene fatto, prova e vedi se funziona, è il miglior modo...

    attento alla distinzione errore/eccezione, ripeto, non so quando venga fatto, ma o ti fai una notify come pensavi passando per l'observer, ma sei SEMPRE in attesa dell'ok anche le volte in cui tutto va bene, oppure sollevi il problema SOLO quando si presenta

    a prima vista (senza averlo mai fatto) userei questo meccanismo per bloccare l'esecuzione e lasciarla libera quando tutto è ok, anche perché devi in qualche modo avvisare l'utente che sta tentando qualcosa di sbagliato

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.