Please review this PR and [CSR](https://bugs.openjdk.org/browse/JDK-8317756) which defines the behavior for creating ChoiceFormats with incorrect patterns. The wording is added to both the ChoiceFormat constructor and ChoiceFormat::applyPattern method.
While ideally the inconsistent behavior itself could be fixed, this behavior has been long-standing for 20+ years and the benefit of consistent error handling does not outweigh the risk of breaking applications that may be relying on the "expected" incorrect behavior. Examples of the range of behavior, (all examples violate the pattern syntax defined in the class description) // no limit -> throws an expected IllegalArgumentException var a = new ChoiceFormat("#foo"); // no limit or relation in the last subPattern -> discards the incorrect portion, 'baz' and continues var b = new ChoiceFormat("0#foo|1#bar|baz"); b.format(2); // returns 'bar' // no relation or limit -> discards the incorrect portion, 'foo' and continues var c = new ChoiceFormat("foo"); c.format(1); // throws AIOOBE ------------- Commit messages: - more conservative wording - init Changes: https://git.openjdk.org/jdk/pull/17856/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=17856&range=00 Issue: https://bugs.openjdk.org/browse/JDK-6801704 Stats: 11 lines in 1 file changed: 11 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/17856.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/17856/head:pull/17856 PR: https://git.openjdk.org/jdk/pull/17856