--- James/src/java/org/apache/james/mailrepository/AvalonMailRepository.java	Wed Apr 21 21:36:02 2004
+++ James/src/java/org/apache/james/mailrepository/AvalonMailRepository.java
@@ -331,13 +331,23 @@
             try {
                 mc = (MailImpl) or.get(key);
             } catch (RuntimeException re) {
-                StringBuffer exceptionBuffer =
-                    new StringBuffer(128)
+		if (re.getCause() != null &&
+		    Error.class.isAssignableFrom(re.getCause().getClass()) {
+		    StringBuffer exceptionBuffer =
+			new StringBuffer(128)
+                            .append("Error retrieving mail: ")
+                            .append(re.toString())
+                            .append(", but we won't delete it!");
+		    getLogger().debug(exceptionBuffer.toString());
+		} else {
+		    StringBuffer exceptionBuffer =
+			new StringBuffer(128)
                             .append("Exception retrieving mail: ")
                             .append(re.toString())
                             .append(", so we're deleting it... good riddance!");
-                getLogger().debug(exceptionBuffer.toString());
-                remove(key);
+		    getLogger().debug(exceptionBuffer.toString());
+		    remove(key);
+		}
                 return null;
             }
             MimeMessageAvalonSource source = new MimeMessageAvalonSource(sr, destination, key);
--- James/src/java/org/apache/james/mailrepository/filepair/File_Persistent_Object_Repository.java	Sun Mar 14 22:15:10 2004
+++ James/src/java/org/apache/james/mailrepository/filepair/File_Persistent_Object_Repository.java
@@ -71,7 +71,8 @@
         catch( final Throwable e )
         {
             throw new RuntimeException(
-              "Exception caught while retrieving an object, cause: " + e.toString() );
+              "Exception caught while retrieving an object, cause: " + e.toString(),
+	      e );
         }
     }
 
