Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

จะแก้ไข NullPointerException ใน Java ได้อย่างไร


NullPointerException เป็นข้อยกเว้นรันไทม์ที่เกิดจาก JVM เมื่อโค้ดแอปพลิเคชันของเรา, API ที่อ้างอิงอื่นๆ หรือมิดเดิลแวร์พบเงื่อนไขต่อไปนี้

  • พยายามเรียกใช้เมธอดอินสแตนซ์ของอ็อบเจกต์ null
  • พยายามเข้าถึงหรือแก้ไขฟิลด์เฉพาะของออบเจกต์ null
  • พยายามรับความยาวของวัตถุ null เป็นอาร์เรย์

ขั้นตอนในการแก้ไข NullPointerException:

  • ตรวจสอบ java.lang.NullPointerException ติดตามสแต็กและกำหนดตำแหน่งที่ทริกเกอร์ข้อยกเว้น (รหัสแอปพลิเคชัน, API บุคคลที่สาม, ซอฟต์แวร์มิดเดิลแวร์ และแยกบรรทัด)
  • หากปัญหาอยู่ที่รหัสแอปพลิเคชัน จำเป็นต้องมีการแนะนำโค้ด หากพบปัญหาจาก API ของบุคคลที่สามหรือมิดเดิลแวร์ จำเป็นต้องตรวจสอบโค้ดที่อ้างอิงก่อนและพิจารณาว่าอาจเป็นสาเหตุของปัญหาทางอ้อมหรือไม่ เช่น การส่งผ่านค่า Null ไปยังวิธี API ของบุคคลที่สาม เป็นต้น
  • หากพบปัญหาในโค้ดของแอปพลิเคชัน ให้พยายามตรวจสอบว่าอินสแตนซ์ของ Object ใดเป็นค่าว่างและทำให้เกิดปัญหา เราจำเป็นต้องแก้ไขโค้ดเพื่อเพิ่มการตรวจสอบความถูกต้องของค่า null ที่เหมาะสมและการบันทึกที่ถูกต้อง เพื่อให้เราเข้าใจแหล่งที่มาของค่า null ได้เช่นกัน

ตัวอย่าง

public class NPEDemo {
   private String field1 = null;
   private String field2 = null;
   public String getField1() {
      return field1;
   }
   private void setField1(String field1) {
      this.field1 = field1;
   }
   public String getField2() {
      return field2;
   }
   private void setField2(String field2) {
      this.field2 = field2;
   }
   public static void main(String[] args) {
      try {
         NPEDemo npe = new NPEDemo();
         npe.setField1("field1 value");
         npe = null;
         npe.setField2("field2 Value");
      } catch (Throwable e) {
         System.out.println("Java Error is: "+e );
         e.printStackTrace();
      }
   }
}

ผลลัพธ์

Java Error is: java.lang.NullPointerException
java.lang.NullPointerException
at NPEDemo.main(NPEDemo.java:24)