Author: rwhitcomb
Date: Fri Mar 12 18:09:34 2021
New Revision: 1887545

URL: http://svn.apache.org/viewvc?rev=1887545&view=rev
Log:
Updates to ExceptionUtils to recognize more classes that need
this treatment, and to make the exception names more readable.

Modified:
    pivot/trunk/core/src/org/apache/pivot/util/ExceptionUtils.java

Modified: pivot/trunk/core/src/org/apache/pivot/util/ExceptionUtils.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/util/ExceptionUtils.java?rev=1887545&r1=1887544&r2=1887545&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/util/ExceptionUtils.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/util/ExceptionUtils.java Fri Mar 12 
18:09:34 2021
@@ -19,6 +19,8 @@ package org.apache.pivot.util;
 import java.io.FileNotFoundException;
 import java.net.UnknownHostException;
 import java.nio.charset.CharacterCodingException;
+import java.nio.charset.IllegalCharsetNameException;
+import java.nio.charset.UnsupportedCharsetException;
 import java.nio.file.NoSuchFileException;
 
 
@@ -71,6 +73,38 @@ public final class ExceptionUtils {
     }
 
     /**
+     * Produce a more readable exception name from the given exception.
+     *
+     * @param       ex      The exception in question.
+     * @return              A "nicer" or more readable name to use in 
reporting.
+     */
+    private static String exceptionName(Throwable ex) {
+        String simpleName = ex.getClass().getSimpleName();
+        String nicerName  = simpleName;
+
+        switch (simpleName) {
+            case "CharacterCodingException":
+            case "NumberFormatException":
+                break;
+            default:
+                nicerName = simpleName.replace("Exception", 
"").replace("Error", "");
+                break;
+        }
+
+        // Make the exception name a little easier to read
+        StringBuilder buf = new StringBuilder(nicerName.length() * 2);
+        for (int i = 0; i < nicerName.length(); i++) {
+            char ch = nicerName.charAt(i);
+            if (i > 0 && Character.isUpperCase(ch)) {
+                buf.append(' ');
+            }
+            buf.append(ch);
+        }
+
+        return buf.toString();
+    }
+
+    /**
      * Incremental version with more options.
      *
      * @param    ex          The exception to report.
@@ -90,26 +124,28 @@ public final class ExceptionUtils {
         final boolean convertTabs) {
 
         for (Throwable next = ex; next != null;) {
-            String msg, className;
+            String msg, name;
 
             if (useToString) {
                 msg = next.toString();
             } else {
-                msg       = next.getLocalizedMessage();
-                className = next.getClass().getSimpleName();
+                msg  = next.getLocalizedMessage();
+                name = exceptionName(next);
 
                 if (msg == null) {
-                    msg = className;
+                    msg = name;
                 } else if ((next instanceof UnknownHostException)
                         || (next instanceof NoClassDefFoundError)
                         || (next instanceof ClassNotFoundException)
                         || (next instanceof NullPointerException)
                         || (next instanceof CharacterCodingException)
+                        || (next instanceof IllegalCharsetNameException)
+                        || (next instanceof UnsupportedCharsetException)
                         || (next instanceof FileNotFoundException)
                         || (next instanceof NoSuchFileException)
                         || (next instanceof UnsupportedOperationException)
                         || (next instanceof NumberFormatException)) {
-                    msg = String.format("%1$s: %2$s", className, msg);
+                    msg = String.format("%1$s \"%2$s\"", name, msg);
                 }
             }
             buf.append(msg);


Reply via email to