< prev index next >

src/java.base/share/classes/java/lang/NullPointerException.java

Print this page
rev 59858 : 8248476: No helpful NullPointerException message after calling fillInStackTrace
Summary: reported by christoph.dreis@freenet.de
Reviewed-by:
rev 57039 : 8234335: Remove line break in class declaration in java.base
Summary: Remove line break in class declarations where applicable
Reviewed-by: rriggs, lancea
rev 56645 : 8218628: Add detailed message to NullPointerException describing what is null.
Summary: This is the implementation of JEP 358: Helpful NullPointerExceptions.
Reviewed-by: coleenp, clanger, rschmelter, rriggs, forax, mr
rev 56135 : 8229997: Apply java.io.Serial annotations in java.base
Reviewed-by: alanb, rriggs
rev 47216 : 8187443: Forest Consolidation: Move files to unified layout
Reviewed-by: darcy, ihse

*** 68,77 **** --- 68,87 ---- */ public NullPointerException(String s) { super(s); } + private transient int numStackTracesFilledIn; + + /** + * {@inheritDoc} + */ + public synchronized Throwable fillInStackTrace() { + numStackTracesFilledIn++; + return super.fillInStackTrace(); + } + /** * Returns the detail message string of this throwable. * * <p> If a non-null message was supplied in a constructor it is * returned. Otherwise, an implementation specific message or
*** 86,96 **** * * @return the detail message string, which may be {@code null}. */ public String getMessage() { String message = super.getMessage(); ! if (message == null) { return getExtendedNPEMessage(); } return message; } --- 96,108 ---- * * @return the detail message string, which may be {@code null}. */ public String getMessage() { String message = super.getMessage(); ! // If the stack trace was changed the extended NPE algorithm ! // will compute a wrong message. ! if (message == null && numStackTracesFilledIn == 1) { return getExtendedNPEMessage(); } return message; }
< prev index next >