Ik zit de laatste dagen wat te stoeien met exceptions, en ik vraag me nu af hoe jullie exceptions gebruiken. Gebruik je exceptions vooral om onverwachte gebeurtenissen op te vangen, of gebruik je ze ook als vervanging van if/else? Met dat laatste bedoel ik dit:
Zelf zou ik normaal gesproken dit doen:
<?php
if ($this->foo() === true) {
$this->bar();
} else {
$this->foobar();
}
?>
Nu zeggen een aantal van jullie dat het goed is om exceptions in je flow op te nemen. Is het dan de bedoeling dat je dit gaat doen?
<?php
try {
$this->foo();
$this->bar();
} catch (FooException $e) {
$this->foobar();
}
?>
Wat is nu in essentie het doel van Exceptions? Onverwachte dingen afhandelen (een database die gene verbinding kan maken, een bestand dat niet kan worden weggeschreven, een mailserver die plat ligt) of is het een moderne variant van if/else?
Als je dat draait bestaan er 2 classes niet en krijg je een error. Dat wilde wouter niet. Dus maakte hij (op een minder saaie manier) de classes aan. Hij wilde het werkend krijgen, dus Exception extenden is het makkelijkst. Het is ook nog eens pseudo code, dus waarom zou je SPL Exceptions er bij gaan betrekken?
<?php
// begin code die nodig is om het voorbeeld te laten werken en er voor de rest totaal niet toe doet
class FooException extends Exception {}
class BarException extends Exception {}
// eind code die nodig is om het voorbeeld te laten werken en er voor de rest totaal niet toe doet
Vind je het nu nog nodig om SPL Exceptions te gebruiken bij een boorbeeld? Zolang jij niet aangeeft in welke context je de vraag stelt neem ik aan dan het in de huidige context gevraagt wordt: een voorbeeld dat de een klein geïsoleerd gedrag duidelijk maakt. Niet een voorbeeld dat best practices demonstreert wat beginners zouden moeten volgen.
Is dat een goede reden waarom \Exception extenden in die context net zo goed is als SPL Exceptions classes extenden?