Out of curiosity I tried to create a really large string. It turned out that the Formatter
class chokes on width specifications exceeding Integer.MAX_VALUE
:
// Produces an empty string. (2147483648 = Integer.MAX_VALUE + 1)
String.format("%2147483648s", "");
So I went off to verify that it was indeed according to spec. But all it says is
If the format specifier contains a width or precision with an invalid value or which is otherwise unsupported, then a IllegalFormatWidthException or IllegalFormatPrecisionException respectively will be thrown.
So in my opinion the correct behavior would be to throw an IllegalFormatWidthException
.
Is this bug (?) documented somewhere? (If not, I'll go report it.)
Also, it should be noted that if one puts a -
in front of the width (to left-justify the output):
String.format("%-2147483648s", "");
it indeed throws a MissingFormatWidthException
(which, as I see it, seems to be correct behavior).
(I'm using OpenJDK version 1.6.0_20.)