ho anche affrontato questa situazione, e come te, non volevo innumerevoli if/else if/else if/else in quanto rende il codice meno leggibile.
Ho finito per estendere la classe Exception con la mia. La classe di esempio riportato di seguito è stato per problemi di convalida che, quando innescato produrrebbe un meno grave 'log preavviso'
class ValidationEx extends Exception
{
public function __construct($message, $code = 0, Exception $previous = null)
{
parent::__construct($message, $code, $previous);
}
public function __toString()
{
return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
}
}
Nel mio codice principale lo chiamo io;
throw new ValidationEx('You maniac!');
Poi alla fine dell'istruzione Try ho
catch(ValidationEx $e) { echo $e->getMessage(); }
catch(Exception $e){ echo $e->getMessage(); }
felici a commenti e critiche, siamo tutti qui per imparare!
'throw ('Tirami fuori di qui!')' Salta fuori. ma non è esattamente bello –
non puoi usare altro dopo l'if? – mattfryercom
@MattyF - +1, suona come una risposta a me! – adeneo