8198989: Provide more diagnostic IAE messages
authornaoto
Mon, 12 Mar 2018 20:47:21 -0700
changeset 49211 948ece16567b
parent 49210 7c795d301dbf
child 49212 48452579de86
8198989: Provide more diagnostic IAE messages Reviewed-by: lancea
src/java.base/share/classes/java/lang/Character.java
src/java.base/share/classes/java/lang/String.java
--- a/src/java.base/share/classes/java/lang/Character.java	Mon Mar 12 16:09:18 2018 -0700
+++ b/src/java.base/share/classes/java/lang/Character.java	Mon Mar 12 20:47:21 2018 -0700
@@ -3590,7 +3590,8 @@
          */
         public static UnicodeBlock of(int codePoint) {
             if (!isValidCodePoint(codePoint)) {
-                throw new IllegalArgumentException();
+                throw new IllegalArgumentException(
+                    String.format("Not a valid Unicode code point: 0x%X", codePoint));
             }
 
             int top, bottom, current;
@@ -3649,7 +3650,8 @@
         public static final UnicodeBlock forName(String blockName) {
             UnicodeBlock block = map.get(blockName.toUpperCase(Locale.US));
             if (block == null) {
-                throw new IllegalArgumentException();
+                throw new IllegalArgumentException("Not a valid block name: "
+                            + blockName);
             }
             return block;
         }
@@ -7394,7 +7396,8 @@
          */
         public static UnicodeScript of(int codePoint) {
             if (!isValidCodePoint(codePoint))
-                throw new IllegalArgumentException();
+                throw new IllegalArgumentException(
+                    String.format("Not a valid Unicode code point: 0x%X", codePoint));
             int type = getType(codePoint);
             // leave SURROGATE and PRIVATE_USE for table lookup
             if (type == UNASSIGNED)
@@ -8088,7 +8091,8 @@
             toSurrogates(codePoint, dst, dstIndex);
             return 2;
         } else {
-            throw new IllegalArgumentException();
+            throw new IllegalArgumentException(
+                String.format("Not a valid Unicode code point: 0x%X", codePoint));
         }
     }
 
@@ -8116,7 +8120,8 @@
             toSurrogates(codePoint, result, 0);
             return result;
         } else {
-            throw new IllegalArgumentException();
+            throw new IllegalArgumentException(
+                String.format("Not a valid Unicode code point: 0x%X", codePoint));
         }
     }
 
@@ -10178,7 +10183,8 @@
      */
     public static String getName(int codePoint) {
         if (!isValidCodePoint(codePoint)) {
-            throw new IllegalArgumentException();
+            throw new IllegalArgumentException(
+                String.format("Not a valid Unicode code point: 0x%X", codePoint));
         }
         String name = CharacterName.getInstance().getName(codePoint);
         if (name != null)
--- a/src/java.base/share/classes/java/lang/String.java	Mon Mar 12 16:09:18 2018 -0700
+++ b/src/java.base/share/classes/java/lang/String.java	Mon Mar 12 20:47:21 2018 -0700
@@ -3178,6 +3178,7 @@
             return new String(StringUTF16.toBytesSupplementary(codePoint), UTF16);
         }
 
-        throw new IllegalArgumentException("Not a valid Unicode code point");
+        throw new IllegalArgumentException(
+            format("Not a valid Unicode code point: 0x%X", codePoint));
     }
 }