RFR(L): 8218628: Add detailed message to NullPointerException describing what is null.

Langer, Christoph christoph.langer at sap.com
Fri Feb 8 10:50:42 UTC 2019


Hi Goetz,

thanks for bringing this into OpenJDK finally. I know of people that'll be quite happy about this feature.

I had a quick glance through the code. Here are a few findings:

src/java.base/share/classes/java/lang/NullPointerException.java:
line 56:
remove a space before the comment

line 62:     private transient boolean lazyComputeDefaultMessage;
I think the name for this variable is not well chosen. I'd prefer lazyComputeMessage, because it's not a default message, it's rather "the" message of the exception.
Then, I think you should initialize the field right away in this line to true, no need to do it in the constructor. (Or can't that be done for transient fields?? ��)

122     private native void setDefaultMessage(String extendedMessage);
Here, I agree with David, that you should do it in Java. Just use a shared secret, then you don't even need reflection...
It also should not be "setDefaultMessage" but rather "setMessage".

Best regards
Christoph

 
> -----Original Message-----
> From: hotspot-runtime-dev <hotspot-runtime-dev-
> bounces at openjdk.java.net> On Behalf Of Lindenmaier, Goetz
> Sent: Donnerstag, 7. Februar 2019 17:43
> To: hotspot-runtime-dev at openjdk.java.net; Java Core Libs <core-libs-
> dev at openjdk.java.net>
> Subject: [CAUTION] RFR(L): 8218628: Add detailed message to
> NullPointerException describing what is null.
> 
> Hi,
> 
> since Java 5, our internal VM reports verbose null pointer exception
> messages. I would like to contribute this feature to OpenJDK.
> 
> With this change, messages as
>    "java.lang.NullPointerException: while trying to load from a null int array
> loaded from local variable 'ia1'"
> are printed.  For more examples see the JBS bug or the test included.
> https://bugs.openjdk.java.net/browse/JDK-8218628
> 
> The messages are generated by parsing the bytecodes. For not to have any
> overhead when the
> NPE is allocated, the message is only generated when it is accessed by
> getMessage() or
> serialization. For this I added a field to NPE to indicate that the message still
> needs to be
> computed lazily.
> 
> Please review:
> http://cr.openjdk.java.net/~goetz/wr19/8218628-exMsg-NPE/01/
> I'm happy to incorporate your comments.
> 
> Best regards,
>   Goetz
> 



More information about the hotspot-runtime-dev mailing list