Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 12 su 12

Discussione: omettere try&catch

  1. #11
    andr3a mi faresti un esempio pratico dell'eccezzione senza throw? Non mi è chiaro. Voglio dire, essendo eccezzioni, so dove possono capitare, o potrebbero, quindi il try catch mi pare d'obbligo.
    Help me.
    --
    http://rastagnoli.altervista.org

  2. #12
    Originariamente inviato da knottyboy
    andr3a mi faresti un esempio pratico dell'eccezzione senza throw?
    come ho detto, la mia era una precisazione sul fatto che le eccezioni possono tranquillamente essere usate senza generare errori errori fatali poichè la causa di tali errori è il solo throw e non l' eccezione.

    L' eccezione di per se è solo una classe built-in estendibile o usabile come qualunque altra classe e non ha vincoli.

    Il throw invece ha vincoli, se non è all' interno di un try catch genera errori fatali e non può quindi essere usato.

    Il fatto di avere eccezioni in PHP non è sempre un bene, ci sono motivi validi per non usarle come si è soliti fare.

    Uno di questi credo sia il fatto che un codice "intasato" di try catch con più catch e senza finally potrebbe risultare veramente illeggibile invece di migliorare la lettura di un codice.

    Ecco un esempio banale di pagina o script che non usa try catch ma che , come con l'uso di try catch, prosegue nei suoi lavori per dare solo alla fine l'eventuale esito positivo o negativo di quanto fatto fino ad ora ( con try catch se non mettiamo dei die o exit negli errori il codice continua tranquillamente ... non è che "lavorano per noi" )

    codice:
    <?php
    class NoTryCatch {
    	private $__e = array();
    	final public function setSomething($value) {
    		if($value != 'test')
    			$this->setException('value is not correct');
    	}
    	final public function hasExceptions() {
    		return (count($this->__e) > 0);
    	}
    	final private function setException($str, $code = 0) {
    		array_push($this->__e, new Exception($str, $code));
    	}
    	final function getExceptions() {
    		return $this->__e;
    	}
    }
    
    $noTryCatchClass = new NoTryCatch();
    
    $var = 'something';
    $noTryCatchClass->setSomething($var);
    
    $another = 'something else';
    $noTryCatchClass->setSomething($another);
    
    if($noTryCatchClass->hasExceptions()) {
    	echo "Sorry, this page has generated some errors.
    
    	Please try to use this page correctly.
     
    
    	Exceptions list:
    	<pre>".print_r($noTryCatchClass->getExceptions(), true)."</pre>";
    }
    else
    	echo "It's all OK";
    ?>
    Notare come le info utili delle eccezioni quali la linea, il file ed il resto sono comunque utlizzabili e leggibili, quindi sfruttiamo una classe in modo utile senza usare throw.

    Alcuni spunti di riflessione: http://www.andreashalter.ch/phpug/20040115/2.html
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.