Originariamente inviato da lloyd27
Il costrutto try-catch, e più in generale le eccezioni, non sono pensate per l'uso che pensi tu in questo caso...
ah no? ma pensa te che pensavo di avere ragione ;-)
Ecco com'è la storia. try è fatto apposta per "provare" un pezzo di codice. catch per "catturare" qualche cosa. cosa? beh ... un'eccezione, ovvero un errore emerso in try. In java una cosa analoga a questa funziona:
codice:
try {
int x = 5;
int y = 0;
int buggy = x/y;
}
catch (ArithmeticException e) {
System.out.print("shut the fuck up"); // funziona come dovrebbe!
}
cioè l'errore viene zittito, e viene eseguito il blocco catch senza tante teghe. Insomma le eccezzioni vengono usate in java "per lo scopo che penso io".
Persino JavaScript la fa da maestro. Ecco il codice:
codice:
try {
nonEsiste();
}
catch (e) {
alert("error man") // error man
}
che funziona appunto alla grande.
in php invece ti tocca fare (grazie andr3a):
Codice PHP:
set_error_handler(create_function('', 'throw new Exception("errore php");')); // <<<< va che roba!!
try {
$buggy = 5/0;
}
catch (Exception $e) {
echo "shut the fuck up";
}
nel fantastico mondo di php, si ha che l'errore non genera nessuna eccezione e il motore se ne esce con uno degli inutili e ingestibili messaggi di cui sapete.
Nessuna scusa dunque. Che alla zend si siano sentiti in colpa lo dimostra quando detto da andr3a nel reply precedente al tuo. Come sempre ci hanno messo una pezza. cioè ti fanno parlare a te con il gestore di errori per dirgli di buttare ecezzioni invece degli idiotici messaggi a cui siamo abituati.
Sarebbe ora che dessero una piallata a questi difetti. Per quanto riguarda le retrocompatibilità la gente può usare gli interpreti vecchi. il target dovrebbe essere liberare i programmatori veri dalle porcherie del passato. senno facciamo la fine di perl (che tutto sommato tiene ancora botta).
p.s.: non vorrei dare l'impressione che non mi piace php ;-) lo trovo uno spasso!