为什么我可以在Java中抛出null,为什么还要将其转换为NullPointerException?

在Java中,每种类型都有默认值,当您不初始化类的实例变量时,Java编译器将使用这些值代您初始化它们。Null是对象类型的默认值,您也可以手动将null分配给方法中的对象。

Object obj = null;

但是,您不能使用具有null值的对象或(如果使用null值而不是对象)对象,则将引发NullPointerException。

示例

public class Demo {

   String name = "Krishna";

   int age = 25;

   public static void main(String args[]) {

      Demo obj = null;

      System.out.println(obj.age);

      System.out.println(obj.name);

   }

}

运行时异常

Exception in thread "main" java.lang.NullPointerException

   at july_set3.Demo.main(Demo.java:11)

抛出NullPointerException

您还可以使用throw关键字在Java中引发NullPointerException。

示例

public class ExceptionExample {

   public static void main(String[] args) {

      System.out.println("Hello");

      NullPointerException nullPointer = new NullPointerException();

      throw nullPointer;

   }

}

输出结果

Hello

Exception in thread "main" java.lang.NullPointerException

   at MyPackage.ExceptionExample.main(ExceptionExample.java:6

抛出空值

根据Java文档,如果您尝试执行NullPointerException-

  • 使用null对象调用a方法(实例)。

  • 访问,修改,打印空值(对象)的字段。

  • 尝试访问(打印/在语句中使用)空值的长度。

  • 抛出一个空值。

  • 访问或修改具有空值的元素/插槽。

意味着如果抛出空值,则会发生空指针异常,这不是向上转换。

示例

public class Demo {

   public static void main(String args[]) {

      throw null;

   }

}

运行时异常

Exception in thread "main" java.lang.NullPointerException

   at july_set3.Demo.main(Demo.java:5)

以上是 为什么我可以在Java中抛出null,为什么还要将其转换为NullPointerException? 的全部内容, 来源链接: utcz.com/z/320588.html

回到顶部