RFR: 8375119: SwitchBoostraps.enumSwitch does not throw an NPE when lookup is null in some cases
Jan Lahoda
jlahoda at openjdk.org
Wed Jan 14 13:43:14 UTC 2026
On Tue, 13 Jan 2026 20:48:52 GMT, Johannes Döbler <duke at openjdk.org> wrote:
> > The SwitchBootstraps.enumSwitch is documented to throw a NullPointerException when lookup is null, but it does not throw the exception in all cases.
>
> Nothing against failing fast, but wouldn't this argumentation open a can of worms? The method documents that it can throw multiple exceptions but there is no guaranteed order of argument checking. So even if the method documents that it rejects a null `labels` parameter it is still valid to throw a IllegalArgumentException first when checking the `invocationType` parameter.
The point of adding the explicit checks for `invocationType` and `labels` is to avoid the need to analyze the code/reason about the code to find out whether the check is carried or not. Because even for `lookup`, the code mostly seemed like it will throw NPE for `lookup == null`, but it didn't. And when explicitly checking `lookup`, it seems weird to not explicitly check all of them.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/29202#issuecomment-3749609146
More information about the core-libs-dev
mailing list