On Fri, 26 Mar 2021 20:48:19 GMT, Sergey Bylokhov <s...@openjdk.org> wrote:
>> https://bugs.openjdk.java.net/browse/JDK-8255800 could have been a one line >> spec clean up but >> it didn't take a lot of looking to realize there were many more >> inconsistencies between spec and implementation. >> I've spent a lot of time on what is just small number of factory methods in >> Raster because there are so >> many possible exceptions and in some cases they rely on other API they call >> to generate exceptions and >> these may have not been documented or documented acc. to some long lost >> behavior. >> I've mostly tried to ONLY change spec. But I couldn't help myself when some >> checks were missed that >> ended up with bizarre and dubious behavior - throwing >> NegativeArrayIndexException which just about >> always has to be an internal bug ! >> >> The supplied test passes on JDK 16 as well as this code, because the >> (relatively) small number of >> cases where JDK 16 threw NegativeArrayIndexException are caught and allowed >> only for releases < 17 >> So where you see those in the test it corresponds to the behavioral changes >> from NegativeArrayIndexException >> to IllegalArgumentException. >> JCK conformance tests still pass so they must not test those conditions. > > src/java.desktop/share/classes/java/awt/image/ComponentSampleModel.java line > 127: > >> 125: * @throws IllegalArgumentException if {@code pixelStride} is less >> than 0 >> 126: * @throws IllegalArgumentException if {@code scanlineStride} is >> less than 0 >> 127: * @throws NullPointerException if {@code bandOffsets} is {@code >> null} > > I like the NPE here, but probably it makes sense to use the same exception > for all errors? "IllegalArgumentException " Meaning even though you like the NPE you would change it to IAE like the rest ? ------------- PR: https://git.openjdk.java.net/jdk/pull/3223