http://www.objectsource.com/j2eechapters/Ch18-Exception_Handling.htm Start at 18.7 Exception handling -
Struts way.
The best practice would be to use a mix of declarative exception handling and non-declarative exception handling.
For example, you may want to use declarative exception handling to handle exeptions if the database cannot be connected. You would not want to use declarative exception handling when validating user entered values (i.e. an entered value must be a number).
Another option (but probably not the best practice for struts) is to have all of your classes extend the org.apache.struts.action.Action class (which they should do already) and override the execute method and handle all of you exceptions in there.