Index: java/text/MessageFormat.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/text/MessageFormat.java,v retrieving revision 1.8 diff -u -b -B -r1.8 MessageFormat.java --- java/text/MessageFormat.java 26 Dec 2003 22:40:33 -0000 1.8 +++ java/text/MessageFormat.java 14 Jan 2004 21:36:01 -0000 @@ -170,7 +170,7 @@ else if (c == '{') break; else if (c == '}') - throw new IllegalArgumentException (); + throw new IllegalArgumentException("Found '}' without '{'"); else buffer.append(c); } @@ -245,7 +245,7 @@ } catch (NumberFormatException nfx) { - throw new IllegalArgumentException (); + throw new IllegalArgumentException("Failed to parse integer string"); } // Extract the element format. @@ -264,7 +264,7 @@ // Advance past the last terminator. if (index >= max || pat.charAt(index) != '}') - throw new IllegalArgumentException (); + throw new IllegalArgumentException("Missing '}' at end of message format"); ++index; // Now fetch trailing string. @@ -349,7 +349,8 @@ for (int i = 0; i < elements.length; ++i) { if (elements[i].argNumber >= arguments.length) - throw new IllegalArgumentException (); + throw new IllegalArgumentException("Not enough arguments given"); + Object thisArg = arguments[elements[i].argNumber]; Format formatter = null; @@ -359,7 +360,8 @@ { if (elements[i].formatClass != null && ! elements[i].formatClass.isInstance(thisArg)) - throw new IllegalArgumentException (); + throw new IllegalArgumentException("Wrong format class"); + formatter = elements[i].format; } else if (thisArg instanceof Number) @@ -596,7 +598,8 @@ public void setFormats (Format[] newFormats) { if (newFormats.length < elements.length) - throw new IllegalArgumentException (); + throw new IllegalArgumentException("Not enough format objects"); + int len = Math.min(newFormats.length, elements.length); for (int i = 0; i < len; ++i) elements[i].setFormat = newFormats[i];