Fix for ColdFusion 8 Broken Exception HTTP Response
August 1, 2007 on 3:44 am | In Java, Adobe, ColdFusion |Here’s a quick and dirty solution for the issue described in: ColdFusion 8 Exception Handling Breaks HTTP Requests.
<cffunction name="onError" access="public" returntype="void" output="false">
<cfargument name="exception" type="any" required="true">
<cfargument name="eventname" type="string" required="false">
<cfset var error = getMetaData(exception)>
<cfset var message = left(reReplace(reReplace(exception.message,"\r|\n"," ","all"),"\s\s+"," ","all"),500)>
<cfset var msg = "">
<cfloop condition="true">
<cfif not isDefined("error") or error.getName() eq "coldfusion.runtime.NeoException">
<cfbreak>
</cfif>
<cfset error = error.getSuperClass()>
</cfloop>
<cfif isDefined("error")>
<cfset msg = error.getDeclaredField("msg")>
<cfset msg.setAccessible(true)>
<cfset msg.set(exception,message)>
<cfif exception.getClass().getName() eq "coldfusion.runtime.CustomException">
<cfset msg = getMetaData(exception).getDeclaredField("userMessage")>
<cfset msg.setAccessible(true)>
<cfset msg.set(exception,message)>
</cfif>
</cfif>
<cfthrow object="#exception#">
</cffunction>
Place that in your Application.cfc and CF won’t break the http requests anymore. Of course this won’t work if you have the Java Access Control enabled in the CF8 Administrator.
No Comments yet »
RSS feed for comments on this post. TrackBack URI