Natuurlijk werkt die catch niet. In het geval van een onverwachte witte pagina krijg je 99 van de 100 keer een fatal error, en die vang je met exceptions niet af.
Anyway, ik gebruik de oo notatie van mysqli(mproved) ipv de procedural notatie van mysql, en er is niets mis met die([result => false]) als het om simpele ajaxerige communicatie gaat.
Mwah, ook dan is het netter, want dan kun je alle erroroutput onder elkaar afhandelen in je catches terwijl je je code amper vervuilt met foutafhandeling. Maar het ging me in mijn opmerking dan ook meer om de mysql_error(). Zet die nooit zo in je code neer als ik in mijn vorige post deed, want één keer vergeten weg te halen en je zet de deur al op een kier voor hackers.

Is DatabaseException bedoeld voor deze taak, of is dat een fictieve extension van Exception?
Fictief is hij niet, hij zit in al mijn projecten. Maar je zal hem wel zelf even moeten extenden van Exception als je hem wil gebruiken, ja.

MueR schreef op woensdag 15 juni 2011 @ 09:42:
[...]
NMe ging er hier even van uit dat je een eigen wrapper om mysql(i) hebt zitten. Hij is gewend aan de codebase binnen ons bedrijf, waar we dat standaard doen, juist om exceptions te kunnen gooien. Nou ja, voornamelijk om zonder al te veel problemen de database te kunnen switchen van mysql naar mssql, postgre of wat dan ook. De Exceptions zijn een bijkomend voordeel.
Die exceptions hebben niet zo heel veel te maken met die wrapper class hoor, ook in je script zelf kun je gewoon zelf exceptions gooien en afvangen. Dat onze wrapper class er een aantal uit zichzelf doet is mooi meegenomen maar geen beperking van het gebruik van exceptions.
En ja, in dit geval is DatabaseException gewoon een derivative van Exception, tenzij je hem echt goed uitbreid met debug-only foutmeldingen enzo.
Ook na uitbreiden is het nog afgeleid van Exception; moet ook wel, want anders kun je hem niet catchen.

[Voor 28% gewijzigd door NMe op 15-06-2011 09:53]