JDK 13 RFR of JDK-8220346: Refactor java.lang.Throwable to use Objects.requireNonNull
Mandy Chung
mandy.chung at oracle.com
Mon Mar 11 17:59:36 UTC 2019
The updated patch looks good.
Mandy
On 3/11/19 9:29 AM, Joe Darcy wrote:
> Hello,
>
> Always surprising how much discussion an (apparently) simple refactoring
> can generate!
>
> Thanks to Tagir for spotting this issue.
>
> For completeness, the two-argument forms of requireNonNull which takes a
> Supplier<String> is not applicable to preserve the message behavior
> since the loop counter i is not final or effectively final:
>
> Objects.requireNonNull(defensiveCopy[i], () -> "stackTrace[" + i +
> "]");
>
> Therefore, I'll revert this use of requireNonNull in Throwable but keep
> the other three:
>
> diff -r 289fd6cb7480 src/java.base/share/classes/java/lang/Throwable.java
> --- a/src/java.base/share/classes/java/lang/Throwable.java Mon Mar 11
> 15:34:16 2019 +0100
> +++ b/src/java.base/share/classes/java/lang/Throwable.java Mon Mar 11
> 09:28:51 2019 -0700
> @@ -914,8 +914,7 @@
> for (Throwable t : suppressedExceptions) {
> // Enforce constraints on suppressed exceptions in
> // case of corrupt or malicious stream.
> - if (t == null)
> - throw new
> NullPointerException(NULL_CAUSE_MESSAGE);
> + Objects.requireNonNull(t, NULL_CAUSE_MESSAGE);
> if (t == this)
> throw new
> IllegalArgumentException(SELF_SUPPRESSION_MESSAGE);
> suppressed.add(t);
> @@ -942,8 +941,7 @@
> stackTrace = null;
> } else { // Verify stack trace elements are non-null.
> for(StackTraceElement ste : stackTrace) {
> - if (ste == null)
> - throw new NullPointerException("null
> StackTraceElement in serial stream. ");
> + Objects.requireNonNull(ste, "null StackTraceElement
> in serial stream.");
> }
> }
> } else {
> @@ -1034,8 +1032,7 @@
> if (exception == this)
> throw new
> IllegalArgumentException(SELF_SUPPRESSION_MESSAGE, exception);
>
> - if (exception == null)
> - throw new NullPointerException(NULL_CAUSE_MESSAGE);
> + Objects.requireNonNull(exception, NULL_CAUSE_MESSAGE);
>
> if (suppressedExceptions == null) // Suppressed exceptions not
> recorded
> return;
>
> Thanks,
>
> -Joe
More information about the core-libs-dev
mailing list