En utilisant Adobe ColdFusion version 8 et inférieure, tous mes cfqueries sont encapsulés dans un try catch qui appelle une fonction dans database.cfc appelée "CatchError".Bonne routine try/catch à usage général
<cftry>
<cfquery datasource="myDatasource">
UPDATE TableName SET
...
WHERE ID = <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.ID#">
</cfquery>
<cfcatch>
<cfset local.result = Variables.objDatabase.CatchError(cfcatch)>
</cfcatch>
</cftry>
Q1: Y at-il un bon receveur d'erreur d'usage général qui a été écrit qui prend en compte tous les différents types d'exception (Tout, demande, Base de données, Expression, verrouillage, MissingInclude, objet, sécurité, modèle et SearchEngine) ? Q2: Je pense que je voudrais aussi enregistrer ces erreurs, peut-être pas dans un fichier texte mais dans une base de données. Bien sûr, vous voyez le problème avec cela ... la journalisation des erreurs de base de données dans la base de données ...
Q3: Et je pourrais vouloir envoyer un courriel à quelqu'un si c'est la première erreur de cette session.
Si vous utilisez application.cfc, vous devez utiliser onError (http://livedocs.adobe.com/coldfusion/8/htmldocs/AppEvents_06.html#1188543), et non cferror.Sinon, c'est comme si vous utilisiez un tournevis pour enfoncer un clou - cela pourrait fonctionner, mais vous n'utilisez pas vos outils correctement. –
Je suis curieux de savoir pourquoi OnError est mieux? Je préfère ne pas l'utiliser car je n'aime pas avoir de sortie html dans mon application.cfc. – Soldarnal
Ce n'est pas "meilleur" en soi, mais c'est le mécanisme de gestion des erreurs associé au framework application.cfc. Considérez cela comme un exercice de rasoir d'occam - les explications les plus simples sont généralement les meilleures. Si vous entendez des sabots, vous penserez "cheval" et non "zèbre". Si un autre développeur voit application.cfc, il pense "onError", pas "cferror". La méthode onError a aussi l'avantage d'être vraiment omniprésente; une erreur qui se produit avant qu'un appel cferror ne soit non géré. D'ici là, vous pouvez tout aussi bien utiliser un cfinclude depuis le corps du gestionnaire onError si vous préférez. –