diff --git a/src/java/org/apache/commons/collections/CursorableLinkedList.java b/src/java/org/apache/commons/collections/CursorableLinkedList.java
index bc420ca..1d3b12b 100644
--- a/src/java/org/apache/commons/collections/CursorableLinkedList.java
+++ b/src/java/org/apache/commons/collections/CursorableLinkedList.java
@@ -664,7 +664,7 @@
      *               be stored, if it is big enough; otherwise, a new array of the
      *               same runtime type is allocated for this purpose.
      * @return an array containing the elements of this list.
-     * @exception ArrayStoreException
+     * @throws ArrayStoreException
      *                   if the runtime type of the specified array
      *                   is not a supertype of the runtime type of every element in
      *                   this list.
diff --git a/src/java/org/apache/commons/collections/FastArrayList.java b/src/java/org/apache/commons/collections/FastArrayList.java
index 4b11bc4..2bee770 100644
--- a/src/java/org/apache/commons/collections/FastArrayList.java
+++ b/src/java/org/apache/commons/collections/FastArrayList.java
@@ -178,7 +178,7 @@
      * @param index Index at which to insert this element
      * @param element The element to be inserted
      *
-     * @exception IndexOutOfBoundsException if the index is out of range
+     * @throws IndexOutOfBoundsException if the index is out of range
      */
     public void add(int index, Object element) {
 
@@ -230,7 +230,7 @@
      * @param index Index at which insertion takes place
      * @param collection The collection to be added
      *
-     * @exception IndexOutOfBoundsException if the index is out of range
+     * @throws IndexOutOfBoundsException if the index is out of range
      */
     public boolean addAll(int index, Collection collection) {
 
@@ -254,7 +254,7 @@
      * Remove all of the elements from this list.  The list will be empty
      * after this call returns.
      *
-     * @exception UnsupportedOperationException if <code>clear()</code>
+     * @throws UnsupportedOperationException if <code>clear()</code>
      *  is not supported by this list
      */
     public void clear() {
@@ -405,7 +405,7 @@
      *
      * @param index The index of the element to return
      *
-     * @exception IndexOutOfBoundsException if the index is out of range
+     * @throws IndexOutOfBoundsException if the index is out of range
      */
     public Object get(int index) {
 
@@ -576,7 +576,7 @@
      *
      * @param index The starting position of the iterator to return
      * @return the list iterator
-     * @exception IndexOutOfBoundsException if the index is out of range
+     * @throws IndexOutOfBoundsException if the index is out of range
      */
     public ListIterator listIterator(int index) {
         if (fast) {
@@ -593,7 +593,7 @@
      *
      * @param index Index of the element to be removed
      *
-     * @exception IndexOutOfBoundsException if the index is out of range
+     * @throws IndexOutOfBoundsException if the index is out of range
      */
     public Object remove(int index) {
 
@@ -643,7 +643,7 @@
      *
      * @param collection Collection containing elements to be removed
      *
-     * @exception UnsupportedOperationException if this optional operation
+     * @throws UnsupportedOperationException if this optional operation
      *  is not supported by this list
      */
     public boolean removeAll(Collection collection) {
@@ -670,7 +670,7 @@
      *
      * @param collection Collection containing elements to be retained
      *
-     * @exception UnsupportedOperationException if this optional operation
+     * @throws UnsupportedOperationException if this optional operation
      *  is not supported by this list
      */
     public boolean retainAll(Collection collection) {
@@ -702,7 +702,7 @@
      * @param index Index of the element to replace
      * @param element The new element to be stored
      *
-     * @exception IndexOutOfBoundsException if the index is out of range
+     * @throws IndexOutOfBoundsException if the index is out of range
      */
     public Object set(int index, Object element) {
 
@@ -743,7 +743,7 @@
      * @param fromIndex The starting index of the sublist view
      * @param toIndex The index after the end of the sublist view
      *
-     * @exception IndexOutOfBoundsException if an index is out of range
+     * @throws IndexOutOfBoundsException if an index is out of range
      */
     public List subList(int fromIndex, int toIndex) {
         if (fast) {
@@ -780,7 +780,7 @@
      *
      * @param array Array defining the element type of the returned list
      *
-     * @exception ArrayStoreException if the runtime type of <code>array</code>
+     * @throws ArrayStoreException if the runtime type of <code>array</code>
      *  is not a supertype of the runtime type of every element in this list
      */
     public Object[] toArray(Object array[]) {
diff --git a/src/java/org/apache/commons/collections/comparators/ComparatorChain.java b/src/java/org/apache/commons/collections/comparators/ComparatorChain.java
index 93fbf2f..ddc0cce 100644
--- a/src/java/org/apache/commons/collections/comparators/ComparatorChain.java
+++ b/src/java/org/apache/commons/collections/comparators/ComparatorChain.java
@@ -168,7 +168,7 @@
      * 
      * @param index      index of the Comparator to replace
      * @param comparator Comparator to place at the given index
-     * @exception IndexOutOfBoundsException
+     * @throws IndexOutOfBoundsException
      *                   if index &lt; 0 or index &gt;= size()
      */
     public void setComparator(int index, Comparator comparator) 
@@ -260,7 +260,7 @@
      * @param o1  the first object to compare
      * @param o2  the second object to compare
      * @return -1, 0, or 1
-     * @exception UnsupportedOperationException
+     * @throws UnsupportedOperationException
      *                   if the ComparatorChain does not contain at least one
      *                   Comparator
      */
diff --git a/src/java/org/apache/commons/collections/comparators/NullComparator.java b/src/java/org/apache/commons/collections/comparators/NullComparator.java
index d52c6db..c0975e1 100644
--- a/src/java/org/apache/commons/collections/comparators/NullComparator.java
+++ b/src/java/org/apache/commons/collections/comparators/NullComparator.java
@@ -65,7 +65,7 @@
      *  non-<code>null</code> objects.  This argument cannot be
      *  <code>null</code>
      *
-     *  @exception NullPointerException if <code>nonNullComparator</code> is
+     *  @throws NullPointerException if <code>nonNullComparator</code> is
      *  <code>null</code>
      **/
     public NullComparator(Comparator nonNullComparator) {
@@ -104,7 +104,7 @@
      *  that <code>null</code> should be compared as lower than a
      *  non-<code>null</code> object.
      *
-     *  @exception NullPointerException if <code>nonNullComparator</code> is
+     *  @throws NullPointerException if <code>nonNullComparator</code> is
      *  <code>null</code>
      **/
     public NullComparator(Comparator nonNullComparator, boolean nullsAreHigh) {
diff --git a/src/java/org/apache/commons/collections/iterators/EnumerationIterator.java b/src/java/org/apache/commons/collections/iterators/EnumerationIterator.java
index f18f978..e91a058 100644
--- a/src/java/org/apache/commons/collections/iterators/EnumerationIterator.java
+++ b/src/java/org/apache/commons/collections/iterators/EnumerationIterator.java
@@ -103,8 +103,8 @@
      * If so, the first occurrence of the last returned object from this
      * iterator will be removed from the collection.
      *
-     * @exception IllegalStateException <code>next()</code> not called.
-     * @exception UnsupportedOperationException if no associated collection
+     * @throws IllegalStateException <code>next()</code> not called.
+     * @throws UnsupportedOperationException if no associated collection
      */
     public void remove() {
         if (collection != null) {
diff --git a/src/test/org/apache/commons/collections/AbstractTestObject.java b/src/test/org/apache/commons/collections/AbstractTestObject.java
index 41647af..42d81d5 100644
--- a/src/test/org/apache/commons/collections/AbstractTestObject.java
+++ b/src/test/org/apache/commons/collections/AbstractTestObject.java
@@ -259,7 +259,7 @@
      * 
      * @param o Object to serialize
      * @param path path to write the serialized Object
-     * @exception IOException
+     * @throws IOException
      */
     protected void writeExternalFormToDisk(Serializable o, String path) throws IOException {
         FileOutputStream fileStream = new FileOutputStream(path);
@@ -272,7 +272,7 @@
      * 
      * @param o Object to convert to bytes
      * @return serialized form of the Object
-     * @exception IOException
+     * @throws IOException
      */
     protected byte[] writeExternalFormToBytes(Serializable o) throws IOException {
         ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
@@ -287,8 +287,8 @@
      * 
      * @param path path to the serialized Object
      * @return the Object at the given path
-     * @exception IOException
-     * @exception ClassNotFoundException
+     * @throws IOException
+     * @throws ClassNotFoundException
      */
     protected Object readExternalFormFromDisk(String path) throws IOException, ClassNotFoundException {
         FileInputStream stream = new FileInputStream(path);
@@ -301,8 +301,8 @@
      * 
      * @param b byte array containing a serialized Object
      * @return Object contained in the bytes
-     * @exception IOException
-     * @exception ClassNotFoundException
+     * @throws IOException
+     * @throws ClassNotFoundException
      */
     protected Object readExternalFormFromBytes(byte[] b) throws IOException, ClassNotFoundException {
         ByteArrayInputStream stream = new ByteArrayInputStream(b);
