cfcatch type= problem

2008-11-21 Thread Adrian Lynch
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/


~|
Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to 
date
Get the Free Trial
http://ad.doubleclick.net/clk;207172674;29440083;f

Archive: 
http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:315758
Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4


RE: cfcatch type= problem

2008-11-21 Thread Adrian Lynch
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/

-Original Message-
From: James Holmes
Sent: 21 November 2008 11:48
To: cf-talk
Subject: Re: cfcatch type= problem


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/



2008/11/21 Adrian Lynch [EMAIL PROTECTED]:
 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/


~|
Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to 
date
Get the Free Trial
http://ad.doubleclick.net/clk;207172674;29440083;f

Archive: 
http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:315760
Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4