"Declarative" means that you declare rules from a fixed set of options.
"Programmatic" means that you actually write program code.
The primary advantages of declarative specifications is that they're simple, easier to validate, and usually have less overhead. The primary advantage of the programmatic is that it's more flexible. You're not limited to only the options that whoever designed the declarative rules defined.
That's true of any system, not just Struts. However, I'm not quite sure of what you mean by "declarative exception handling", unless you mean things like the error page stuff in the web.xml file.
Sometimes the only way things ever got fixed is because people became uncomfortable.