diff --git a/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java b/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
index 3e95c75..25cf2f2 100644
--- a/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
+++ b/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
@@ -30,6 +30,7 @@
 import org.apache.tiles.definition.DefinitionsFactoryException;
 import org.apache.tiles.definition.DefinitionsReader;
 import org.xml.sax.Attributes;
+import org.xml.sax.ErrorHandler;
 import org.xml.sax.SAXException;
 
 import java.io.IOException;
@@ -37,6 +38,7 @@
 import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
+import org.xml.sax.SAXParseException;
 
 /**
  * Reads {@link Definition} objects from
@@ -190,6 +192,7 @@
         digester.setValidating(validating);
         digester.setNamespaceAware(true);
         digester.setUseContextClassLoader(true);
+        digester.setErrorHandler(new ThrowingErrorHandler());
 
         // Register our local copy of the DTDs that we can find
         for (int i = 0; i < registrations.length; i += 2) {
@@ -351,4 +354,25 @@
     public void addDefinition(Definition definition) {
         definitions.put(definition.getName(), definition);
     }
+
+    /**
+     * Error Handler that throws every exception it receives.
+     */
+    private static class ThrowingErrorHandler implements ErrorHandler {
+
+        /** {@inheritDoc} */
+        public void warning(SAXParseException exception) throws SAXException {
+            throw exception;
+        }
+
+        /** {@inheritDoc} */
+        public void error(SAXParseException exception) throws SAXException {
+            throw exception;
+        }
+
+        /** {@inheritDoc} */
+        public void fatalError(SAXParseException exception) throws SAXException {
+            throw exception;
+        }
+    }
 }
diff --git a/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java b/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
index 2779cf3..700a63c 100644
--- a/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
+++ b/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
@@ -198,16 +198,9 @@
      * configuration file with invalid XML.
      */
     public void testValidatingParameter() {
-        /*
-         * For some reason this test doesn't work.  It throws a SAXParseException
-         * but then the test failes saying "Should've thrown an exception.
-         *
-         * I don't know why DigesterDefinitionsReader doesn't catch the
-         * SAXParseException or how it makes it to the "fail" statement below.
-         *
         try {
             DefinitionsReader reader = new DigesterDefinitionsReader();
-            Map params = new HashMap();
+            Map<String, String> params = new HashMap<String, String>();
             params.put(DigesterDefinitionsReader.PARSER_VALIDATE_PARAMETER_NAME,
                     "true");
             reader.init(params);
@@ -217,13 +210,15 @@
             assertNotNull("Config file not found", configFile);
 
             InputStream source = configFile.openStream();
-            Map definitions = reader.read(source);
+            reader.read(source);
             fail("Should've thrown an exception.");
         } catch (DefinitionsFactoryException e) {
             // correct.
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("Exception caught, it is OK", e);
+            }
         } catch (Exception e) {
             fail("Exception reading configuration." + e);
         }
-         */
     }
 }
