In navolging van mijn eerdere topic vandaag, ben ik tot de conclusie gekomen dat ik mijn vraag wellicht anders / breder moet stellen.
Stel ik wil een class Foo gebruiken:
$foo = new Foo();
Echter, om een of andere reden kan het bestand wat bij deze class hoort niet geladen worden (bijvoorbeeld omdat het niet bestaat). Kan ik de fout die hieruit volgt dan op de een of andere manier opvangen?
"The following error types cannot be handled with a user defined function: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, and most of E_STRICT raised in the file where set_error_handler() is called."
[bron]http://www.php.net/manual/en/function.set-error-handler.php[/bron]
[table]
[tr]
[td]Value[/td]
[td]Constant[/td]
[td]Description[/td]
[/tr]
[tr]
[td]1[/td]
[td]E_ERROR[/td]
[td]Fatal run-time errors. These indicate errors that can not be recovered from, such as a memory allocation problem. Execution of the script is halted.[/td]
[/tr]
[tr]
[td]4[/td]
[td]E_PARSE[/td]
[td]Compile-time parse errors. Parse errors should only be generated by the parser.[/td]
[/tr]
[tr]
[td]16[/td]
[td]E_CORE_ERROR[/td]
[td]Fatal errors that occur during PHP's initial startup. This is like an E_ERROR, except it is generated by the core of PHP.[/td]
[/tr]
[tr]
[td]32[/td]
[td]E_CORE_WARNING[/td]
[td]Warnings (non-fatal errors) that occur during PHP's initial startup. This is like an E_WARNING, except it is generated by the core of PHP.[/td]
[/tr]
[tr]
[td]64[/td]
[td]E_COMPILE_ERROR[/td]
[td]Fatal compile-time errors. This is like an E_ERROR, except it is generated by the Zend Scripting Engine.[/td]
[/tr]
[tr]
[td]128[/td]
[td]E_COMPILE_WARNING[/td]
[td]Compile-time warnings (non-fatal errors). This is like an E_WARNING, except it is generated by the Zend Scripting Engine.[/td]
[/tr]
[tr]
[td]2048[/td]
[td]E_STRICT[/td]
[td]Enable to have PHP suggest changes to your code which will ensure the best interoperability and forward compatibility of your code.[/td]
[/tr]
[/table]
[bron]http://www.php.net/manual/en/errorfunc.constants.php[/bron]
Gelukkig kunnen mensen altijd zo goed documentatie lezen...
"The following error types cannot be handled with a user defined function: E_ERROR"
"E_ERROR - Fatal run-time errors"
Hier is niks technisch aan... Gewoon domweg wat engels lezen en iets verder kijken en iets preciezer de doc lezen en iedereen kan hier makkelijk op komen.
Nee Wouter, verschillende mensen... verschillende interpretaties. Ik bedoel dit overigens niet lullig tegenover jou, maar jij bent veel technischer dan velen hier op het forum. Dat betekent dat je bepaalde dingen sneller doorziet en dat je sneller verbanden kunt leggen. Wees daar vooral blij om, en probeer andere mensen daarmee te helpen. Maar ga er niet vanuit dat andere mensen hetzelfde denken en kunnen als jij. Ieder mens heeft zijn/haar eigen kwaliteiten op diverse vlakken.
Dat gezegd hebbende... een PHP Fatal error is dus een run-time error? En die kan ik niet opvangen... dus anders gezegd, als er een object wordt aangemaakt dat niet vantevoren is geladen, klapt je applicatie er gewoon uit en daar is niks tegen te doen. Correct?
Leuk hé PHP?
Even buiten code fouten, de ene keer een catchable error en dan andere keer niet (bv als je bij je database connectie een niet bestaande host opgeeft, kan je dat afvangen met try ... catch)
>> de ene keer een catchable error en dan andere keer niet
Ja, in dit geval dus niet... dus vraag ik me af hoe je daar mee om moet gaan. Wat als jij een class aanroept, en om een of andere reden is het class bestand verdwenen. Hoe ga je daar dan mee om? De autoloader een exception laten gooien als het bestand niet bestaat? Ik zie niet echt een andere mogelijkheid :-s