Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Come gestire gli errori all'interno di una classe?

    Ciao a tutti, la mia domanda è (spero) semplice e google non mi ha saputo dare risposta: come posso, all'interno di una classe far si che quando si verifica un errore non continui l'esecuzione dello script ma continui la generazione del codice HTML? (senza usare die, ecc... o centinaia di condizioni).
    Vi faccio un esempio (non è il mio caso, anche perchè sarebbe abbastanza controproducente), il mio script prevede l'esecuzione delle seguenti funzioni:

    PHP > Connettiti a MySql;
    PHP > Scegli il database;
    HTML>Header;
    HTML>Inizio contenuti;
    PHP > Prendi le informazioni contenute nella tabella xyz;
    PHP > Aggiungi le informazioni sul file zyx;
    PHP < (Errore, il file non esiste!);
    PHP > Sposta il file nella cartella yzx;
    PHP > Elimina i records dal database;
    HTML>Fine contenuti;
    HTML>Footer;

    Utilizzando die("errore") la generazione del codice si fermerebbe alla copiatura del file, ma non si visualizzerebbe il footer e a me non va bene.

    Utilizzando un semplice output php continuerebbe con l'esecuzione dei comandi, cancellando i records sul database ed il risultato sarebbe la perdita delle informazioni.

    E' chiaro che in questo caso potrei anche usare una condizione prima di ogni operazione per verificare l'assenza di errori precedenti, ma con uno script più lungo l'unica soluzione è davvero controllare che le funzioni precedenti non abbiano generato errori?

  2. #2
    Ti suggerisco di iniziare leggendo il manuale ufficiale:

    http://www.php.net/set_error_handler
    http://www.php.net/set_exception_handler
    http://www.php.net/ob_start
    http://www.php.net/ob_clean

    Per quanto riguarda il caso specifico, ogni sistema ha al sua gestione degli errori. Alcune operazioni (es. quelle del DB) le puoi ripristinare utilizzando le transazioni, altre creando delle code di lavori da eseguire per effettuare la pulitura.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.