On Tue, 6 Oct 2020 13:55:55 GMT, Roger Riggs <rri...@openjdk.org> wrote:
>> The `java.util.Formatter` format specifies support for field widths, >> argument indexes, or precision lengths of a field >> that relate to the variadic arguments supplied to the formatter. These >> numbers are specified by integers, sometimes >> negative. For argument index, it's specified in the documentation that the >> highest allowed argument is limited by the >> largest possible index of an array (ie the largest possible variadic index), >> but for the other two it's not defined. >> Moreover, what happens when a number field in a string is too large or too >> small to be represented by a 32-bit integer >> type is not defined. This fix adds documentation to specify what error >> behavior occurs during these cases. >> Additionally it adds an additional exception type to throw when an invalid >> argument index is observed. A CSR will be >> required for this PR. > > Is the new exception type useful? yes, it matches the previous pattern. > But it does not (and none of the IllegalFormatException subclasses) produce a > readable message with the offending > value. So the developer will not see anything useful. The fine grained > exceptions provide little value. I've been on the fence about this, personally. The Formatter uses pretty fine-grained exception types for error conditions. I'd be okay discontinuing this practice here, but am not sure what to replace this with. Perhaps we enable `IllegalFormatException` to be, itself, public and instantiable ? ------------- PR: https://git.openjdk.java.net/jdk/pull/516