Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6463998

Undocumented NullPointerException from Float.parseFloat and Double.parseDouble

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 7
    • 6, 6u29
    • core-libs
    • b68
    • x86
    • linux, windows_7

      FULL PRODUCT VERSION :
      java version "1.6.0-beta2"
      Java(TM) SE Runtime Environment (build 1.6.0-beta2-b86)
      Java HotSpot(TM) Client VM (build 1.6.0-beta2-b86, mixed mode, sharing)


      ADDITIONAL OS VERSION INFORMATION :
      Linux localhost 2.6.17-1mdk #1 Fri Jul 21 09:47:28 CDT 2006 i686 Intel(R) Pentium(R) 4 CPU 2.66GHz Mandriva Linux


      A DESCRIPTION OF THE PROBLEM :
      When a null value is passed to Float.parseFloat() or Double.parseDouble(), a NullPointerException is thrown, which is not mentioned in the API Specifications. Additionally, this exception is wrapped in a NumberFormatException if Integer.parseInt() or Long.parseLong() is used. Wouldn't it be better if these methods handle this the same way?

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      See the code below

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Integer: java.lang.NumberFormatException: null
      Long: java.lang.NumberFormatException: null
      Float: java.lang.NumberFormatException: null
      Double java.lang.NumberFormatException: null
      ACTUAL -
      Integer: java.lang.NumberFormatException: null
      Long: java.lang.NumberFormatException: null
      Float: java.lang.NullPointerException
      Double java.lang.NullPointerException

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      public class Test {


      public static void main(String[] args) {

      try {
      Integer.parseInt(null);
      } catch (Exception ex) {
      System.out.println(ex);
      }

      try {
      Long.parseLong(null);
      } catch (Exception ex) {
      System.out.println(ex);
      }

      try {
      Float.parseFloat(null);
      } catch (Exception ex) {
      System.out.println(ex);
      }

      try {
      Double.parseDouble(null);
      } catch (Exception ex) {
      System.out.println(ex);
      }

      } // end main


      } // end class
      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      We need to catch an additional NullPointerException to ensure the reliability of our code.

            darcy Joe Darcy
            ndcosta Nelson Dcosta (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: