Newsgroup: it.comp.www.php
Titolo: Pensate sia una buona soluzione per gli errori

Ola!
questa volta non sono qui per chiedere come si fa una certa cosa...
Ho risolto da me, ma volevo sapere la vostra opinione sulla bontà
della soluzione.
Non posto codice perchè sarebbe inutilmente lungo.
Comunque la cosa che mi piaceva meno della vecchia versione del sito su
cui sto lavorando, era che in caso di errore (specie nel lavorare con i
db), usavo una die(messaggio) per stampare un messaggio di errore. A
funzionare funzionava però la pagina risultante faceva oltremodo
schifo in quanto tutta la parte di html generata tramite php (quindi
con le varie print) seguente alla die veniva giustamante a mancare.
Oltre al brutto aspetto la pagina così risultante era spesso anche non
valida se controllata con l'html validator del w3c.
Allora ho pensato di fare una cosa del genere:
mi son creato una classe erroreDB con varie proprietà: il codice di
errore che mi permette di identificare il tipo di errore (ad esempio
-100 per gli errori verificatisi sulla mysql_connect ecc ecc), un nome
che ho dato io all'errore (quindi "errore connessione db"), il nome del
file in cui si è verificato l'errore, il nome del metodo e una
descrizione da visualizzare all'utente
Ora quando ho una pagina php, metto una variabile $err globale, e nelle
varie funzioni se si verifica l'errore, invece di dare una die, setto i
vari campi dell'oggetto erroreDB e poi ritorno un valore (solitamente
OK=0, ERRORE=-1). Dalla parte del chiamante non faccio altro che
if ((metodo(paramentri)==ERRORE) {
  $err->stampaErrore()
} else {
  esegui le altre operazioni
}
Che ne dite? c'è qualche controindicazione ad usare una soluzione di
questo tipo?

 questo tipo?
IMHO userei l'output buffering, scarterei cio' che e' stato
visualizzato fino a quel momento e visualizzere una pagina standard con
il solo errore. Questo perche' alle volte se si verifica un errore a
meta' delloscript, il resto potrebbe non venire eseguito correttamente
e, nel caso peggiore, fare danni (UPDATE su DB etc etc).
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

Mmmmm questo è interessante, non ci avevo pensato.
Però nel caso di select semplici è inutile no? al massimo con quelle
vedo la tabella vuota

 Però nel caso di select semplici è inutile no?
Definisci "inutile".
Piu' e' coerente una interfaccia utente, tanto piu' sara' facile da
usare.
-- 
I am what I am, I do what I can


questo tipo?
Scusa se usi php 5 perchč non usare le exception ?
http://www.php.net/manual/en/language.exceptions.php
ciao

 Definisci "inutile".
Nel senso che se la query è una select (diciamo che la pagina deve
solo fare la visualizzazione impaginata secondo lo stile del sito di
SELECT * FROM iscritti) anche se lo script prosegue dopo l'errore il db
resta cmq intatto, al massimo ho la tabella dell'HTML vuoto (questa era
solo una curiosità comunque, in quanto sto cercando di valutare la
faccenda dell'output buffering come mi hai suggerito)
PS: il quoting fatto a mano va bene? :P

 Scusa se usi php 5 perchè non usare le exception ?
PHP 4 e qualcosa (il server non è il mio e non lo aggiornano per ora)