Frage

Mit Adobe Coldfusion Version 8 und unten werden alle meine CFQuers in einen Versuch eingewickelt, der eine Funktion in der Datenbank aufruft. CFC namens "CatchError".

<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>

F1: Gibt es einen guten Allzweck -Fehlerfänger, der geschrieben wurde, der alle verschiedenen Ausnahmetypen berücksichtigt (jede Anwendung, Datenbank, Ausdruck, Sperre, Missinginclude, Objekt, Sicherheit, Vorlage und Suche)?

F2: Ich denke, ich möchte auch diese Fehler protokollieren, vielleicht nicht in einer Textdatei, sondern in einer Datenbank. Natürlich sehen Sie das Problem damit ... Protokollierungsdatenbankfehler in der Datenbank ...

F3: Und ich möchte vielleicht jemandem eine E -Mail senden, wenn es sich um den ersten Fehler dieser Sitzung handelt.

War es hilfreich?

Lösung

Ich denke, Ihre Fragen gelten im Allgemeinen für Fehlerbehandlungen, sodass Sie möglicherweise einige nützliche Antworten in sprachunabhängigen Fragen finden.

1. Soldarnal hat Frage 1 beantwortet, und ich würde dazu neigen, zustimmen zu Fänge an Orten, an denen eine hohe Wahrscheinlichkeit eines Fehlers auftritt, und Sie möchten, dass die Ausführung fortgesetzt wird (im Allgemeinen, wenn Ihre Website auf Ihre Datenbank nicht zugreifen kann, ist sie ein bisschen festgefahren).

2. In Bezug auf Protokollierung, cflog ist das robusteste, da Sie sich fast immer bei einer Datei anmelden können, es sei denn, es gibt schwerwiegende Probleme mit Ihrem Server. cfmail ist als nächstes - der Server sollte irgendwelche Mails anstellen, die er nicht senden kann, obwohl mehr schief gehen kann. Der nächste ist cfhttp Sie können Ihre Fehler an einer externen Site protokollieren. Sie müssen jedoch auftreten, wenn der Fehler gesendet wird oder Sie sie verlieren. Schließlich können Sie sich in einer Datenbank anmelden, aber wenn das nicht mehr steckt.

Sie können eine Kombination an EG -Protokollfehlern für eine Datenbank verwenden, es sei denn, die Datenbank ist nicht verfügbar, melden Sie sich bei der Sicherung bei Dateien an und streichen Sie die Fehler in die Datenbank ein.

3. Wenn Sie Fehler verfolgen, z. cfmail Ermöglichen Sie, dass Sie E -Mails nach allen Fehlern senden. Wir verwenden ein benutzerdefiniertes Skript für Fehlerbehandlungen, aber es kann einige im Internet schweben.

Andere Tipps

In Ihrer Anwendung.cfc können Sie in der Funktion "OnRequestStart" diese Zeile hinzufügen:

<cferror type="EXCEPTION" exception="any" template="act-error.cfm">

In der Regel auf Act-eRror.cfm möchten Sie dem Benutzer HTML anzeigen, der angibt, dass sie eine unberechtigte Ausnahme (in freundlicheren Sprache) zusammen mit einigen freundlichen Links erhalten haben. Außerdem können Sie auf Act-Irror weiterhin auf alle Variablen zugreifen, einschließlich der Fehlervariablen, um das zu tun, was Sie möchten (protokollieren, E-Mail, eine Sitzungsvariable usw. aktualisieren).

Offensichtlich schlägt die Anmeldung in einer Datenbank fehl, wenn der ursprüngliche Fehler darin bestand, dass die Datenbank ausgefallen ist. Falls Sie jedoch nicht wissen, gibt es Ausnahmeboten im Coldfusion -Administrator, die Sie so ermöglichen können, solche Probleme zu protokollieren.

Bearbeiten - Hier ist ein allgemeiner Handler mit dem Cferror -Ansatz:http://www.bennadel.com/blog/932-ask-ben-handling-eRors-with-coldfusion-cferror.htm

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top