JDK 13 RFR of JDK-8220346: Refactor java.lang.Throwable to use Objects.requireNonNull

Lance Andersen lance.andersen at oracle.com
Fri Mar 8 11:23:57 UTC 2019


+1
> On Mar 8, 2019, at 6:08 AM, Joe Darcy <joe.darcy at oracle.com> wrote:
> 
> Hello,
> 
> The code in java.lang.Throwable has various explicit null checks that could be rewritten to use Objects.requireNonNull.
> 
> Please review the patch below which implements this refactoring.
> 
> Thanks,
> 
> -Joe
> 
> diff -r 274361bd6915 src/java.base/share/classes/java/lang/Throwable.java
> --- a/src/java.base/share/classes/java/lang/Throwable.java    Thu Mar 07 10:22:19 2019 +0100
> +++ b/src/java.base/share/classes/java/lang/Throwable.java    Fri Mar 08 02:06:42 2019 -0800
> @@ -874,8 +874,7 @@
>          // Validate argument
>          StackTraceElement[] defensiveCopy = stackTrace.clone();
>          for (int i = 0; i < defensiveCopy.length; i++) {
> -            if (defensiveCopy[i] == null)
> -                throw new NullPointerException("stackTrace[" + i + "]");
> +            Objects.requireNonNull(defensiveCopy[i], "stackTrace[" + i + "]");
>          }
> 
>          synchronized (this) {
> @@ -914,8 +913,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 +940,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 +1031,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;
> 

 <http://oracle.com/us/design/oracle-email-sig-198324.gif>
 <http://oracle.com/us/design/oracle-email-sig-198324.gif> <http://oracle.com/us/design/oracle-email-sig-198324.gif>
 <http://oracle.com/us/design/oracle-email-sig-198324.gif>Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037
Oracle Java Engineering 
1 Network Drive 
Burlington, MA 01803
Lance.Andersen at oracle.com <mailto:Lance.Andersen at oracle.com>





More information about the core-libs-dev mailing list