Was strukturierten Ausnahmebehandlung

 ... 
  

Der Fehler wird nicht gefangen, weil die strukturierte Ausnahmebehandlung ist noch nicht in Kraft, und der Benutzer sieht die Standard-Fehlermeldung. Bevor Sie den Fehler fangen können, müssen Sie ColdFusion sagen, um zu versuchen, ein Fehler abzufangen:

 ... 

CFTRY erzählt ColdFusion der beiliegenden Code-Block für Fehler zu sehen, und CFCATCH erzählt ColdFusion was zu tun ist, wenn ein Fehler auftritt. CFCATCH type = "Jeder", erzählt ColdFusion, dass jeder Fehler bewirkt, dass die Ausführung des Codes übergeben in der betreffenden CFCATCH blockieren. CFCATCH nimmt ein einziges Attribut namens Typ, der die Art des Fehlers, die gefangen ist angibt. Wenn Sie nur die Datenbank Fehler abfangen wollen, zum Beispiel können Sie den folgenden Code ein:

 ... 

Wenn Sie diese CFTRY / Nutzung CFCATCH konstruieren, werden alle Fehler-Datenbank erfasst und durch den Code innerhalb des CFCATCH Tag-Paar behandelt, und alle nondatabase Fehler fallen durch die nächste Stufe in strukturierten Ausnahme Ihrer Anwendung Handling-Rahmen. Durch die Angabe einer fortgeschrittenen Exception-Typ als Argument für den Typ-Attribut CFCATCH, können Sie fangen und behandeln sehr spezifische Fehler, die außerhalb der Grenzen des ColdFusion Server auftreten. Der Punkt, der unter so viele Fehler-Typen ist, dass Ihr strukturierter Ausnahmebehandlung granular jeder reagieren kann Geben Sie in einer bestimmten Weise. Sie könnten zum Beispiel haben eine Ausnahme-Handler, der zwei verschiedene Arten Fänge und behandelt sie auf zwei verschiedene Arten, wie folgt:

 ... Code auszuführen geht hier ...  Ein Datenbank-Fehler aufgetreten ist.  Ein Ausdruck, der Fehler ist aufgetreten 

Das obige Beispiel fängt entweder ein Fehler in der Datenbank oder ein Expression-Fehler und gibt eine andere Botschaft je nachdem, welche ein. Wenn der Fehler ist nicht Ausdruck einer Datenbank oder Fehler auf, wird der Fehler nicht abgefangen und der Benutzer sieht die Standard-Meldung ausgegeben. CFCATCH type = "Jeder" nicht fangen kann eine Art von Fehler. Insbesondere, type = "Any" Fänge einen Fehler im Zusammenhang mit der Java-Klasse java.lang.Exception. type = "Any" jedoch nicht, fangen Fehler, die aus java.lang.Throwable. Um diese Fehler zu fangen, müssen Sie eine spezielle CFCATCH, wie folgt:

 ...  ... 

Selten Begegnung dieser Art, weil keiner der Standard-Funktionen von ColdFusion diese Art von Fehler zu werfen. Sie werden überrascht sein zu erfahren, dass Sie sich nicht sicher Fehler abfangen kann überhaupt. Der folgende Code, z. B. einen Fehler auslöst, unabhängig von der Umgebung CFTRY die schlechten Code:

 Ist ein Fehler aufgetreten! 

Die CFSET keinen Inhalt hat, so dass ColdFusion löst eine Fehlermeldung mit dem Hinweis, Invalid CFML Construct Found on line 9 in Spalte 7. Dieses Ergebnis mag seltsam erscheinen, aber weil Sie ein CFTRY haben und CFCATCH type = "Alle". Das Problem hierbei ist, dass die schlechten CFSET compiletime ein Fehler, der nicht mit CFCATCH gefangen werden kann, erstellt. CFCATCH nur ein Laufzeitfehler auf, die während der Ausführung der Vorlage tritt fangen kann. Im Falle der vorigen Fragment konnte, ColdFusion nicht erfolgreich analysieren und übersetzen Sie die Seite, so dass die Ausnahmebehandlung nicht wirksam werden. Wenn man eine Seite mit einem Fehler bei der Kompilierung, die aufrufende Seite könnte ein Template catch CFINCLUDE Typ Fehler. Dies ist selten, und Sie sollten darauf achten, nicht auf die Ausnahmebehandlung zu fangen Compiler-Fehler zu verlassen. Die kurze Antwort ist nichts! Sie können keine Fehlermeldung, dass Sie für richtig halten, ignorieren sie vollständig von der Prüfung in feinen Details, die Umleitung des Benutzers auf eine alternative Vorlage zu behandeln. Sie in der Regel einen der beiden Dinge, aber. Entweder leiten den Benutzer auf eine andere Seite anzuzeigen oder ein Benutzer-freundliche Botschaft ihm sagen, was passiert ist. Sie können folgen einer der beiden Philosophien bei der Verlagerung des Benutzers. Die erste besteht darin, eine bestimmte Fehler-Seite für jeden Fehler, die auftreten, und leiten den Benutzer auf die jeweilige Seite haben kann, wie im folgenden Beispiel:

 ... 

Der Nachteil dieser Methode ist, dass man nicht weiß, was genau passiert ist und warum. Eine bessere Option wird der Benutzer auf eine Fehlerseite umzuleiten, sondern gehen die Fehlermeldung in der URL wie folgt:

 ... 

Dieser Code übergibt eine detaillierte Fehlermeldung in einem URL-Parameter, um den Fehler-Seite. Eine weitere Möglichkeit ist die direkte irgendeine Art von Meldung angezeigt, anstatt den Benutzer umgeleitet, wie folgt:

 ...  Ein Datenbank-Fehler aufgetreten ist. 

Sie können feststellen, dass die obigen Code ein CFABORT fügt hinzu, nachdem die Nachricht, Sie wollen nicht die fehlerhafte Seite nach Ausführung ein Fehler auftritt, fortzusetzen. Eine letzte Option, die selten benutzt wird, um den Fehler zu ignorieren. Dies ist normalerweise nur dann geeignet, wenn Sie einen Fehler erwarten auftreten, aber nicht für Sie, ob der Fehler auftritt oder nicht, wie der folgende Code zeigt:

 ... 

Wenn Sie einen Fehler zu ignorieren sind, wird von einem Drittanbieter, die CFCATCH Block ist normalerweise eine gute Idee, so dass Sie nicht verwirrt sind, wenn Sie zurück und lesen Sie den Code später. Und sich dessen bewusst, dass das Ignorieren eines Fehlers nachweisen kann gefährlich sein, weil Sie am Ende kann bis versehentlich Fang ein ernster Fehler als Sie erwartet hatten. Mindestens Protokollierung der Fehler, indem Sie CFLOG könnte eine gute Idee, auch wenn Sie planen, es zu ignorieren, wie im folgenden Beispiel:

 ... 

Auf diese Weise können Sie überprüfen den spezifischen Fehler in der Protokolldatei.

Ein Artikel eingereicht von Jose Carreto


Disclaimer:Unsere Website ist nicht verantwortlich für den Inhalt dieses Artikels. Webarticles ist eine kostenlose Informationsquelle.
Wichtig: Dieser Artikel "Was Ausnahmebehandlung strukturiert ist" wurde durch ein automatisches Software übersetzt. Wir fühlen uns leid für alle Rechtschreibfehler, die möglicherweise aufgetreten sind. Vielen Dank für Ihr Verständnis.


Online: 291 users browsing the articles directory