On Wed, 14 May 2025 03:46:37 GMT, Sergey Bylokhov <s...@openjdk.org> wrote:
>> src/java.desktop/share/classes/javax/sound/SoundClip.java line 63: >> >>> 61: public static SoundClip createSoundClip(File file) throws >>> IOException { >>> 62: if (file == null) { >>> 63: throw new IllegalArgumentException("file must not be null"); >> >> Most of the APIs in javax.sound.* throw NullPointerException for null >> arguments and IllegalArgumentException for other invalid parameters. > > it is even noticed for both subpackages, it is better to use NPE here as well: > > * Please note: In the {@code javax.sound.sampled.spi} APIs, a {@code null} > * reference parameter to methods is incorrect unless explicitly documented on > * the method as having a meaningful interpretation. Usage to the contrary is > * incorrect coding and may result in a run time exception either immediately > or > * at some later time. {@code NullPointerException} is an example of typical > and > * acceptable run time exception for such cases. I still think `IllegalArgumentException` is better and clearer if we check the value of the parameter before proceeding to doing anything with the parameter and bail out if the parameter has an invalid value. `NullPointerException`, on the other hand, indicates the code accessed an object but the reference was `null`. (This could occur, for example, if parameters aren't validated.) Although both exception indicate a coding error, they have different semantics. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/24991#discussion_r2088789154