4

Ich erweitere meine Errormanagement-Funktion, die einige Bereiche von Variablen ablädt und sie per E-Mail an mich sendet. Ich verwende die onError-Methode in der Application.cfc für diesen Fall.ColdFusion: Argumente von der Funktion erhalten, die Fehler in der onError-Methode von Application.cfc wirft

<CFDUMP var="#arguments.exception#" label="Error"> 
<CFDUMP var="#Application#" label="APPLICATION-Scope" /> 
<CFDUMP var="#form#" label="FORM-Scope"> 
<CFDUMP var="#url#" label="URL-Scope"> 
<CFDUMP var="#CGI#" label="CGI-Scope" /> 
<CFDUMP var="#session#" label="SESSION-Scope" /> 
<CFDUMP var="#variables#" label="VARIABLES-Scope" /> 

die onError hat die Ausnahme als Argument, das ich zum ersten Mal in diesem Beispiel Dump .... aber wie bekomme ich die Argumente der Funktion, in der der Fehler aufgetreten ist? Zum Beispiel, wenn ich eine UDF in der OnRequest-Methode meiner Application.cfc wie <CFSET giveMeMyScripts("javascript-file-1","javascript-file-2") /> aufrufen. Ist das möglich, javascript-file-1 und javascript-file-2 zu bekommen? Art von Superargumenten?

Danke für irgendwelche Gedanken dazu.

+1

Ich nehme an, Sie wissen nicht die Funktion, wo der Fehler auftritt? Wenn Sie wissen, welche Methode den Fehler auslöst, können Sie den Code in ein CFTRY umwandeln, den Bereich 'arguments' in Ihrem CFCATCH ablegen - oder diesen Bereich in den' request'-Bereich kopieren und diesen in 'onError()' ausgeben auch - dann verwenden Sie CFRETHROW. Ich glaube nicht, dass die 'onError()' Methode Zugriff auf den 'arguments' Bereich einer anderen Methode hätte. Hoffe das hilft. –

+0

Sie haben Recht, ich weiß nicht, welche Funktion die Ausnahme verursacht (das Errormanagement wird in vielen Anwendungen verwendet). Danke für den Hinweis cfrethrow - das ist ziemlich nützlich für neuere Projekte. – Seybsen

Antwort

0

Ich bin mir nicht 100% sicher, aber Sie können vielleicht nur Argumente ablegen. Es kann davon abhängen, wie viele Funktionen Sie tief sind.

Im Allgemeinen, wenn Sie alle Bereiche und die Ausnahme ablegen, haben Sie alle Informationen, die Sie benötigen.

Wir tun fast genau das, was Sie tun und Dump jeden Anwendungsbereich in der Application.cfc

+2

Ich denke, dumping 'Argumente' wird nur den' arguments' Geltungsbereich von 'onError()' ausgeben. –

0

Nicht sicher, Sie können dies tun, ohne eine spezifische Fehlerfalle innerhalb der Funktion einrichten. Aber wenn Sie einfach debuggen sind und über den Fehler erhalten müssen, kopieren Sie die Argumente vorübergehend in den Anforderungsbereich und dump dann den Anforderungsbereich.

+1

Es sieht so aus, als müsste er das mit jeder Methode machen - er weiß nicht, welcher den Fehler wirft. –

+0

yeah das ist, wo die Schönheit der Abhängigkeitsinjektion manchmal ein wenig Glanz verliert :) –