This is a very quick appendix to this morning's article "
<cfcatch>
: my ignorance is reduced. Over a decade after it should have".How about java exceptions? Well ColdFusion and Railo behave differently here.
This is something Sean prompted me to check (via IRC). Here's simialr code to before which handles a Java exception:
//javaExceptions.cfm
illegalArgumentException = createObject("java", "java.lang.IllegalArgumentException").init("test exception");
try {
throw(object=illegalArgumentException);
} catch(java e){
writeOutput("caught it @ java");
} catch(java.lang e){
writeOutput("caught it @ java.lang");
} catch(java.lang.IllegalArgumentException e){
writeOutput("caught it @ java.lang.IllegalArgumentException");
} catch (any e){
writeOutput("caught it @ any");
}
writeOutput("<hr>");
try {
throw(object=illegalArgumentException);
} catch(java.lang e){
writeOutput("caught it @ java.lang");
} catch (any e){
writeOutput("caught it @ any");
}
writeOutput("<hr>");
try {
throw(object=illegalArgumentException);
} catch(java.lang.IllegalArgumentException e){
writeOutput("caught it @ java.lang.IllegalArgumentException");
} catch (any e){
writeOutput("caught it @ any");
}
writeOutput("<hr>");
Here we throw a Java exception instead of a CFML one, and see what does and does not catch it, through various tests.
On CF (I tested on CF9.0.2 -> 11), we get this:
caught it @ java.lang.IllegalArgumentException
caught it @ any
caught it @ java.lang.IllegalArgumentException
And on Railo we get better results:
caught it @ java
caught it @ java.lang
caught it @ java.lang.IllegalArgumentException
Good on Railo.
Oh, and for once my test code ran on OpenBD. It doesn't do a great job:
caught it @ any
caught it @ any
caught it @ any
Anyway, I think if the "namespacing" thing works on ColdFusion for CFML exceptions, it should on Java ones too? What do you think? Raise a ticket?
Righto.
--
Adam