Carsten Ziegeler wrote: >Sylvain Wallez wrote: > > >>Carsten Ziegeler wrote: >> >> >> >>>So, summarizing this, it seems that we agree on changing the InputModule >>>interface to >>> >>>o.a.c.components.modules.InputModule >>>{ >>> Object getAttribute( String name, Map objectModel ) throws >>>ProcessingException; >>> >>> Iterator getAttributeNames( Map objectModel ) throws >>> >>> >>ProcessingException; >> >> >>> Object[] getAttributeValues( String name, Map objectModel ) throws >>>ProcessingException; >>>} >>> >>>Everyone happy with this? >>> >>> >>> >>> >>It looks simpler. >> >>But why throwing a ProcessingException ? Simply throwing Exception would >>avoid exception cascading (I hate these never ending stacktraces) and >>better cope with the variety of implementations. >> >> >> >Valid question...now the question is: where do you want to handle the >exception? >
Back to the exception handling stragegy ;-) AFAIK, exceptions are handled in Cocoon in two places : in <map:handle-errors> and in CocoonServlet. As discussed recently, everywhere else they should just be propagated. And propagating means cascading if the exception you catch doesn't match one of the exception types you're declaring to throw. Now what is the semantic added value of "ProcessingException" compared to "Exception" ? The javadoc states "This exception is thrown every time there is a problem in processing a request". And Cocoon does nothing else than processing a request ! So ProcessingException doesn't IMHO bring much more information than a standard Exception. The only added value is that ProcessingException _should_ be an indication of where the problem occured, and in that case its use should be reserved to pipeline-related classes. If you look at Pipeline and Generator, they do throw a ProcessingException. Action does not and throws an Exception. All this to say that I don't like much this ProcessingException that doesn't say much and often forces cascading :-) >If you throw just Exception than the calling code has to test, if the >thrown Exception is a wrapping or non-wrapping exception if it catches >the exception. This results in rather ugly code with several catch >statements. >If you throw ProcessingException than the component has to do this >conversion - personally I like this approach more. > >But if you want, we can "change" this to just Exception. > Yes, please ;-) Sylvain -- Sylvain Wallez Anyware Technologies Apache Cocoon http://www.anyware-tech.com mailto:[EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]