diff --git a/api/src/main/java/org/apache/commons/chain2/Chain.java b/api/src/main/java/org/apache/commons/chain2/Chain.java
index 83d6d6e..4ff3dd2 100644
--- a/api/src/main/java/org/apache/commons/chain2/Chain.java
+++ b/api/src/main/java/org/apache/commons/chain2/Chain.java
@@ -66,9 +66,9 @@
      * @param <CMD> the {@link Command} type to be added in the {@link Chain}
      * @param command The {@link Command} to be added
      *
-     * @exception IllegalArgumentException if <code>command</code>
+     * @throws IllegalArgumentException if <code>command</code>
      *  is <code>null</code>
-     * @exception IllegalStateException if this {@link Chain} has already
+     * @throws IllegalStateException if this {@link Chain} has already
      *  been executed at least once, so no further configuration is allowed
      */
     <CMD extends Command<K, V, C>> void addCommand(CMD command);
@@ -103,7 +103,7 @@
      * @param context The {@link Context} to be processed by this
      *  {@link Chain}
      *
-     * @exception IllegalArgumentException if <code>context</code>
+     * @throws IllegalArgumentException if <code>context</code>
      *  is <code>null</code>
      *
      * @return {@link Processing#FINISHED} if the processing of this context
diff --git a/api/src/main/java/org/apache/commons/chain2/Command.java b/api/src/main/java/org/apache/commons/chain2/Command.java
index fcfad55..2932b86 100644
--- a/api/src/main/java/org/apache/commons/chain2/Command.java
+++ b/api/src/main/java/org/apache/commons/chain2/Command.java
@@ -94,9 +94,9 @@
      * @param context The {@link Context} to be processed by this
      *  {@link Command}
      *
-     * @exception ChainException general purpose exception return
+     * @throws ChainException general purpose exception return
      *  to indicate abnormal termination
-     * @exception IllegalArgumentException if <code>context</code>
+     * @throws IllegalArgumentException if <code>context</code>
      *  is <code>null</code>
      *
      * @return {@link Processing#FINISHED} if the processing of this contex
diff --git a/api/src/main/java/org/apache/commons/chain2/Filter.java b/api/src/main/java/org/apache/commons/chain2/Filter.java
index 848c47e..6c13dc0 100644
--- a/api/src/main/java/org/apache/commons/chain2/Filter.java
+++ b/api/src/main/java/org/apache/commons/chain2/Filter.java
@@ -57,7 +57,7 @@
      *  by the last {@link Command} that was executed; otherwise
      *  <code>null</code>
      *
-     * @exception IllegalArgumentException if <code>context</code>
+     * @throws IllegalArgumentException if <code>context</code>
      *  is <code>null</code>
      *
      * @return If a non-null <code>exception</code> was "handled" by this
diff --git a/apps/example2/src/main/java/org/apache/commons/chain2/apps/example/ExampleServlet.java b/apps/example2/src/main/java/org/apache/commons/chain2/apps/example/ExampleServlet.java
index 1f69395..e114d30 100644
--- a/apps/example2/src/main/java/org/apache/commons/chain2/apps/example/ExampleServlet.java
+++ b/apps/example2/src/main/java/org/apache/commons/chain2/apps/example/ExampleServlet.java
@@ -49,7 +49,7 @@
     /**
      * <p>Cache the name of the servlet.</p>
      *
-     * @exception ServletException if an initialization error occurs
+     * @throws ServletException if an initialization error occurs
      */
     public void init() throws ServletException {
         super.init();
@@ -69,7 +69,7 @@
      * @param request The request we are processing
      * @param response The response we are creating
      *
-     * @exception IOException if an input/output error occurs
+     * @throws IOException if an input/output error occurs
      */
     public void service(HttpServletRequest request,
                         HttpServletResponse response)
diff --git a/base/src/main/java/org/apache/commons/chain2/base/LookupCommand.java b/base/src/main/java/org/apache/commons/chain2/base/LookupCommand.java
index d9d1190..b525558 100644
--- a/base/src/main/java/org/apache/commons/chain2/base/LookupCommand.java
+++ b/base/src/main/java/org/apache/commons/chain2/base/LookupCommand.java
@@ -263,7 +263,7 @@
      *
      * @param context The context for this request
      *
-     * @exception IllegalArgumentException if no such {@link Command}
+     * @throws IllegalArgumentException if no such {@link Command}
      *  can be found and the <code>optional</code> property is set
      *  to <code>false</code>
      * @return the result of executing the looked-up command, or
@@ -316,7 +316,7 @@
      *
      * @param context {@link Context} for this request
      * @return The catalog.
-     * @exception IllegalArgumentException if no {@link Catalog}
+     * @throws IllegalArgumentException if no {@link Catalog}
      *  can be found
      *
      * @since Chain 1.2
@@ -353,7 +353,7 @@
      *
      * @param context {@link Context} for this request
      * @return The looked-up Command.
-     * @exception IllegalArgumentException if no such {@link Command}
+     * @throws IllegalArgumentException if no such {@link Command}
      *  can be found and the <code>optional</code> property is set
      *  to <code>false</code>
      */
diff --git a/base/src/main/java/org/apache/commons/chain2/impl/CatalogBase.java b/base/src/main/java/org/apache/commons/chain2/impl/CatalogBase.java
index 990ed6e..3941fe8 100644
--- a/base/src/main/java/org/apache/commons/chain2/impl/CatalogBase.java
+++ b/base/src/main/java/org/apache/commons/chain2/impl/CatalogBase.java
@@ -59,7 +59,7 @@
      *
      * @param commands Map of Commands.
      *
-     * @exception IllegalArgumentException if <code>commands</code>
+     * @throws IllegalArgumentException if <code>commands</code>
      * is <code>null</code>
      *
      * @since Chain 1.1
diff --git a/base/src/main/java/org/apache/commons/chain2/impl/ChainBase.java b/base/src/main/java/org/apache/commons/chain2/impl/ChainBase.java
index 4b8b8e4..77baf61 100644
--- a/base/src/main/java/org/apache/commons/chain2/impl/ChainBase.java
+++ b/base/src/main/java/org/apache/commons/chain2/impl/ChainBase.java
@@ -53,7 +53,7 @@
      *
      * @param command The {@link Command} to be configured
      *
-     * @exception IllegalArgumentException if <code>command</code>
+     * @throws IllegalArgumentException if <code>command</code>
      *  is <code>null</code>
      */
     public ChainBase(Command<K, V, C> command) {
@@ -66,7 +66,7 @@
      *
      * @param commands The {@link Command Commands} to be configured
      *
-     * @exception IllegalArgumentException if <code>commands</code>,
+     * @throws IllegalArgumentException if <code>commands</code>,
      *  or one of the individual {@link Command} elements,
      *  is <code>null</code>
      */
@@ -85,7 +85,7 @@
      *
      * @param commands The {@link Command}s to be configured
      *
-     * @exception IllegalArgumentException if <code>commands</code>,
+     * @throws IllegalArgumentException if <code>commands</code>,
      *  or one of the individual {@link Command} elements,
      *  is <code>null</code>
      */
@@ -121,9 +121,9 @@
      * @param <CMD> the {@link Command} type to be added in the {@link Chain}
      * @param command The {@link Command} to be added
      *
-     * @exception IllegalArgumentException if <code>command</code>
+     * @throws IllegalArgumentException if <code>command</code>
      *  is <code>null</code>
-     * @exception IllegalStateException if no further configuration is allowed
+     * @throws IllegalStateException if no further configuration is allowed
      */
     public <CMD extends Command<K, V, C>> void addCommand(CMD command) {
         if (command == null) {
diff --git a/base/src/main/java/org/apache/commons/chain2/impl/ContextBase.java b/base/src/main/java/org/apache/commons/chain2/impl/ContextBase.java
index 4888ba8..9c01e07 100644
--- a/base/src/main/java/org/apache/commons/chain2/impl/ContextBase.java
+++ b/base/src/main/java/org/apache/commons/chain2/impl/ContextBase.java
@@ -72,9 +72,9 @@
      *
      * @param map Map whose key-value pairs are added
      *
-     * @exception IllegalArgumentException if an exception is thrown
+     * @throws IllegalArgumentException if an exception is thrown
      *  writing a local property value
-     * @exception UnsupportedOperationException if a local property does not
+     * @throws UnsupportedOperationException if a local property does not
      *  have a write method.
      */
     public ContextBase(Map<? extends String, ? extends Object> map) {
@@ -162,7 +162,7 @@
      * @param value the value look for in the context.
      * @return <code>true</code> if found in this context otherwise
      *  <code>false</code>.
-     * @exception IllegalArgumentException if a property getter
+     * @throws IllegalArgumentException if a property getter
      *  throws an exception
      */
     @Override
@@ -219,9 +219,9 @@
      * @param key Key of the value to be returned
      * @return The value for the specified key.
      *
-     * @exception IllegalArgumentException if an exception is thrown
+     * @throws IllegalArgumentException if an exception is thrown
      *  reading this local property value
-     * @exception UnsupportedOperationException if this local property does not
+     * @throws UnsupportedOperationException if this local property does not
      *  have a read method.
      */
     @Override
@@ -289,9 +289,9 @@
      * @param value New value to be stored
      * @return The value added to the Context.
      *
-     * @exception IllegalArgumentException if an exception is thrown
+     * @throws IllegalArgumentException if an exception is thrown
      *  reading or writing this local property value
-     * @exception UnsupportedOperationException if this local property does not
+     * @throws UnsupportedOperationException if this local property does not
      *  have both a read method and a write method
      */
     @Override
@@ -338,9 +338,9 @@
      * @param map <code>Map</code> containing key-value pairs to store
      *  (or replace)
      *
-     * @exception IllegalArgumentException if an exception is thrown
+     * @throws IllegalArgumentException if an exception is thrown
      *  reading or writing a local property value
-     * @exception UnsupportedOperationException if a local property does not
+     * @throws UnsupportedOperationException if a local property does not
      *  have both a read method and a write method
      */
     @Override
@@ -358,7 +358,7 @@
      * @param key Key to be removed
      * @return The value removed from the Context.
      *
-     * @exception UnsupportedOperationException if the specified
+     * @throws UnsupportedOperationException if the specified
      *  <code>key</code> matches the name of a local property
      */
     @Override
@@ -424,9 +424,9 @@
      * the {@link Context} implementation class.</p>
      *
      *
-     * @exception IllegalArgumentException if an exception is thrown
+     * @throws IllegalArgumentException if an exception is thrown
      *  writing this local property value
-     * @exception UnsupportedOperationException if this local property does not
+     * @throws UnsupportedOperationException if this local property does not
      *  have a write method.
      */
     private void initialize() {
@@ -459,9 +459,9 @@
      * @param descriptor <code>PropertyDescriptor</code> for the
      *  specified property
      *
-     * @exception IllegalArgumentException if an exception is thrown
+     * @throws IllegalArgumentException if an exception is thrown
      *  reading this local property value
-     * @exception UnsupportedOperationException if this local property does not
+     * @throws UnsupportedOperationException if this local property does not
      *  have a read method.
      */
     private Object readProperty(PropertyDescriptor descriptor) {
@@ -487,7 +487,7 @@
      *
      * @param entry Key-value pair to be removed
      *
-     * @exception UnsupportedOperationException if the specified key
+     * @throws UnsupportedOperationException if the specified key
      *  identifies a property instead of an attribute
      */
     private boolean remove(Map.Entry<String, Object> entry) {
@@ -518,9 +518,9 @@
      * @param value The new value for this property (must be of the
      *  correct type)
      *
-     * @exception IllegalArgumentException if an exception is thrown
+     * @throws IllegalArgumentException if an exception is thrown
      *  writing this local property value
-     * @exception UnsupportedOperationException if this local property does not
+     * @throws UnsupportedOperationException if this local property does not
      *  have a write method.
      */
     private void writeProperty(PropertyDescriptor descriptor, Object value) {
diff --git a/configuration/api/src/main/java/org/apache/commons/chain2/config/ConfigParser.java b/configuration/api/src/main/java/org/apache/commons/chain2/config/ConfigParser.java
index 748ebee..66dc98b 100644
--- a/configuration/api/src/main/java/org/apache/commons/chain2/config/ConfigParser.java
+++ b/configuration/api/src/main/java/org/apache/commons/chain2/config/ConfigParser.java
@@ -47,7 +47,7 @@
      * @param <C> Type of the context associated with this command
      * @param url <code>URL</code> of the configuration document to be parsed
      * @return a CatalogFactory instance parsed from the given location
-     * @exception ChainConfigurationException if a parsing error occurs
+     * @throws ChainConfigurationException if a parsing error occurs
      */
     <K, V, C extends Map<K, V>> CatalogFactory<K, V, C> parse(URL url) throws ChainConfigurationException;
 
diff --git a/configuration/xml/src/main/java/org/apache/commons/chain2/config/xml/XmlConfigParser.java b/configuration/xml/src/main/java/org/apache/commons/chain2/config/xml/XmlConfigParser.java
index 7190618..28f652b 100644
--- a/configuration/xml/src/main/java/org/apache/commons/chain2/config/xml/XmlConfigParser.java
+++ b/configuration/xml/src/main/java/org/apache/commons/chain2/config/xml/XmlConfigParser.java
@@ -145,7 +145,7 @@
      * @param <C> Type of the context associated with this command
      * @param url <code>URL</code> of the XML document to be parsed
      * @return a CatalogFactory instance parsed from the given location
-     * @exception ChainConfigurationException if a parsing error occurs
+     * @throws ChainConfigurationException if a parsing error occurs
      */
     public <K, V, C extends Map<K, V>> CatalogFactory<K, V, C> parse(URL url) {
         // Prepare our Digester instance
diff --git a/web/src/main/java/org/apache/commons/chain2/web/servlet/ChainProcessor.java b/web/src/main/java/org/apache/commons/chain2/web/servlet/ChainProcessor.java
index 78e8387..e62f367 100644
--- a/web/src/main/java/org/apache/commons/chain2/web/servlet/ChainProcessor.java
+++ b/web/src/main/java/org/apache/commons/chain2/web/servlet/ChainProcessor.java
@@ -132,7 +132,7 @@
     /**
      * <p>Cache the name of the command we should execute for each request.</p>
      *
-     * @exception ServletException if an initialization error occurs
+     * @throws ServletException if an initialization error occurs
      */
     @Override
     public void init() throws ServletException {
@@ -153,8 +153,8 @@
      * @param request The request we are processing
      * @param response The response we are creating
      *
-     * @exception IOException if an input/output error occurs
-     * @exception ServletException if a servlet exception occurs
+     * @throws IOException if an input/output error occurs
+     * @throws ServletException if a servlet exception occurs
      */
     @Override
     public void service(HttpServletRequest request, HttpServletResponse response)
diff --git a/web/src/main/java/org/apache/commons/chain2/web/servlet/PathInfoMapper.java b/web/src/main/java/org/apache/commons/chain2/web/servlet/PathInfoMapper.java
index f4f5e16..d20bf40 100644
--- a/web/src/main/java/org/apache/commons/chain2/web/servlet/PathInfoMapper.java
+++ b/web/src/main/java/org/apache/commons/chain2/web/servlet/PathInfoMapper.java
@@ -65,7 +65,7 @@
      *
      * @param context {@link Context} for this request
      * @return The catalog.
-     * @exception IllegalArgumentException if no {@link Catalog}
+     * @throws IllegalArgumentException if no {@link Catalog}
      *  can be found
      *
      * @since Chain 1.2
diff --git a/web/src/main/java/org/apache/commons/chain2/web/servlet/RequestParameterMapper.java b/web/src/main/java/org/apache/commons/chain2/web/servlet/RequestParameterMapper.java
index 5c62eec..8991a20 100644
--- a/web/src/main/java/org/apache/commons/chain2/web/servlet/RequestParameterMapper.java
+++ b/web/src/main/java/org/apache/commons/chain2/web/servlet/RequestParameterMapper.java
@@ -90,7 +90,7 @@
      *
      * @param context {@link Context} for this request
      * @return The catalog.
-     * @exception IllegalArgumentException if no {@link Catalog}
+     * @throws IllegalArgumentException if no {@link Catalog}
      *  can be found
      *
      * @since Chain 1.2
diff --git a/web/src/main/java/org/apache/commons/chain2/web/servlet/ServletPathMapper.java b/web/src/main/java/org/apache/commons/chain2/web/servlet/ServletPathMapper.java
index cd65a4c..cd5679d 100644
--- a/web/src/main/java/org/apache/commons/chain2/web/servlet/ServletPathMapper.java
+++ b/web/src/main/java/org/apache/commons/chain2/web/servlet/ServletPathMapper.java
@@ -65,7 +65,7 @@
      *
      * @param context {@link Context} for this request
      * @return The catalog.
-     * @exception IllegalArgumentException if no {@link Catalog}
+     * @throws IllegalArgumentException if no {@link Catalog}
      *  can be found
      *
      * @since Chain 1.2
