|
Mailing Lists
|
Home /
Groups /
ColdFusion Talk (CF-Talk)
cfcatch type="" problem
I'm caching some objects in an admin object and I serve these cached objectAdrian Lynch 11/21/08 06:03 A You could examine cfcatch.message to see if it matches the type ofJames Holmes 11/21/08 06:54 A Thanks James!Adrian Lynch 11/21/08 07:27 A I'm caching some objects in an admin object and I serve these cached object up in a method, admin.getService("myService"). Some simplifed code: <cfif NOT StructKeyExists(VARIABLES.services, ARGUMENTS.service) OR ARGUMENTS.refresh> <cftry> <cfset VARIABLES.services[ARGUMENTS.service] = CreateObject("component", "cfc.#ARGUMENTS.service#Service").init()> <cfcatch type="any"> <cfthrow type="" message="No such service: #ARGUMENTS.service#<br />#GetCurrentTemplatePath()#"> </cfcatch> </cftry> </cfif> The try/catch is there to trap calls to service CFCs that don't exist. admin.getService("notAService") will throw an exception: No such service: notAService C:\path\to\template.cfc The trouble with the try catch is that it also traps errors in the service object. I've tried changing the type of the catch so I only catch the non-existent CFC exceptions but none seem to work. Any suggestions? Thanks. Adrian Lynch http://www.halestorm.co.uk/ http://www.adrianlynch.co.uk/ You could examine cfcatch.message to see if it matches the type of exception you want. If so, handle it, if not, use cfrethrow. However, since your error handling is essentially just throwing your own description of the same error, can you just allow the original error to be thrown? mxAjax / CFAjax docs and other useful articles: http://www.bifrost.com.au/blog/ ----- Excess quoted text cut - see Original Post for more ----- Thanks James! I've changed the try/catch to: <cftry> <cfset VARIABLES.services[ARGUMENTS.service] = CreateObject("component", "cfc.#ARGUMENTS.service#Service").init()> <cfcatch type="any"> <cfif CFCATCH.Message EQ "Could not find the ColdFusion Component or Interface cfc.#ARGUMENTS.service#Service."> <cfthrow type="" message="No such service: #ARGUMENTS.service#<br />#GetCurrentTemplatePath()#"> <cfelse> <cfrethrow> </cfif> </cfcatch> </cftry> This now throws my own exception when the service doesn't exist and let's others through. Ta. Adrian Building a database of ColdFusion errors at http://cferror.org/ You could examine cfcatch.message to see if it matches the type of exception you want. If so, handle it, if not, use cfrethrow. However, since your error handling is essentially just throwing your own description of the same error, can you just allow the original error to be thrown? mxAjax / CFAjax docs and other useful articles: http://www.bifrost.com.au/blog/ > I'm caching some objects in an admin object and I serve these cached object ----- Excess quoted text cut - see Original Post for more ----- CreateObject("component", > "cfc.#ARGUMENTS.service#Service").init()> > <cfcatch type="any"> > <cfthrow type="" message="No such service: #ARGUMENTS.service#<br ----- Excess quoted text cut - see Original Post for more -----
|
March 21, 2010
|
Latest Fusion Authority Articles
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||