Ik ben op het moment bezig om een applicatie om te bouwen, meer naar OOP i.p.v. naar procedureel toe. Nu wilde ik ook zorgen voor goede error afhandeling. Toen ben ik dus naar try-catch en exceptions gaan kijken. Zo kan ik exceptions gooien als er iets mis gaat, en deze met set_exception_handler afvangen. In de functie die ik als exception handler heb ingesteld kan ik dan netjes de output buffer leeggooien, en een mooie errorpagina op het scherm toveren. Werkt allemaal perfect tot nu toe. Maar nu loop ik tegen een probleem aan, bij simpele dingen lukt het me niet om exceptions te genereren. Bijvoorbeeld:
Dit werkt dus niet. Ik wil dat als de file niet gevonden wordt er een exception gegooid wordt. Nou kan ik eerst met file_exists kijken of het bestand er is, als ie er is requiren, en anders exception gooien.
Iets anders wat zou kunnen is (en qua implementatie veel makkelijker is) gewoon geen exception gooien en d.m.v. van set_error_handler("foo") en dan in foo gewoon een exceptie gooien. Die ik dan weer vang met de exception_handler. Grote nadeel daarvan is alleen dat ik geen custom error messages zoals "engine::including_files::config_file_not_found" kan meegeven.
Hoe kan ik dit soort dingen nou het handigste oplossen? (Zonder dat ik achter elk regeltje iets extra's hoef te typen)
PHP:
1
| require_once "config.php" or (throw new Exception("engine::including_files::config_file_not_found")); |
Dit werkt dus niet. Ik wil dat als de file niet gevonden wordt er een exception gegooid wordt. Nou kan ik eerst met file_exists kijken of het bestand er is, als ie er is requiren, en anders exception gooien.
Iets anders wat zou kunnen is (en qua implementatie veel makkelijker is) gewoon geen exception gooien en d.m.v. van set_error_handler("foo") en dan in foo gewoon een exceptie gooien. Die ik dan weer vang met de exception_handler. Grote nadeel daarvan is alleen dat ik geen custom error messages zoals "engine::including_files::config_file_not_found" kan meegeven.
Hoe kan ik dit soort dingen nou het handigste oplossen? (Zonder dat ik achter elk regeltje iets extra's hoef te typen)
[ Voor 6% gewijzigd door bindsa op 03-06-2010 14:49 ]