Null Pointer Exception ใน Java: การนำไปใช้งานและตัวอย่าง



บทความนี้จะให้ความรู้โดยละเอียดและครอบคลุมเกี่ยวกับวิธีการทำงานของ Null Pointer Exception ใน Java พร้อมด้วยตัวอย่างมากมาย

จำเป็นต้องมีข้อยกเว้นสำหรับการรันโค้ดอย่างราบรื่นและแจ้งให้โปรแกรมเมอร์ทราบข้อผิดพลาดที่จะแก้ไข ในบทความนี้เราจะเน้นที่ Null Pointer Exception ใน Java ตามลำดับต่อไปนี้:

Null Pointer Exception ใน Java คืออะไร?





ข้อยกเว้นของตัวชี้ null ใน Java เป็นข้อยกเว้นของรันไทม์ ในโลกของ Java ค่าว่างพิเศษถูกกำหนดให้กับการอ้างอิงวัตถุ Null Pointer Exception ถูกนำมาใช้เมื่อโปรแกรมพยายามใช้การอ้างอิงอ็อบเจ็กต์ซึ่งมีค่า null ซึ่งสามารถ:

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

ทำไมเราถึงต้องการค่า null?



Null เป็นค่าเฉพาะที่ใช้ใน Java Null ใช้เพื่อแสดงว่าไม่มีการกำหนดค่าให้กับตัวแปรอ้างอิง การประยุกต์ใช้ null หลักอยู่ในการใช้โครงสร้างข้อมูลเช่นรายการและโครงสร้างที่เชื่อมโยง แอปพลิเคชันอื่น ๆ รวมถึงรูปแบบวัตถุว่างและรูปแบบซิงเกิลตัน รูปแบบซิงเกิลตันระบุว่าสามารถเริ่มต้นอินสแตนซ์ของคลาสได้เพียงอินสแตนซ์เดียวและมีจุดมุ่งหมายเพื่อให้มีการเข้าถึงอ็อบเจ็กต์ทั่วโลก

วิธีที่ง่ายและดีที่สุดในการสร้างอย่างน้อยหนึ่งอินสแตนซ์ของคลาสคือการประกาศตัวสร้างทั้งหมดเป็นแบบส่วนตัว จากนั้นพวกเขาสร้างเมธอดสาธารณะที่ส่งคืนอินสแตนซ์เฉพาะของคลาส

// ใช้ฟังก์ชัน randomUUID import java.util.UUID import java.io. * class Singleton {// ที่นี่เราเริ่มต้นค่าของ single และ ID เป็น null Private static Singleton single = null private String ID = null private Singleton () {/ * ทำให้เป็นแบบส่วนตัวเพื่อป้องกันการสร้างอินสแตนซ์ใหม่ของคลาส Singleton * / // สร้าง ID ID แบบสุ่ม = UUID.randomUUID (). toString ()} สาธารณะคงที่ Singleton getInstance () {if (single == null) single = new Singleton () return single} public String getID () {return this.ID}} // รหัสไดรเวอร์คลาสสาธารณะ TestSingleton {public static void main (String [] args) {Singleton s = Singleton.getInstance () System.out.println (s.getID ())}} //

เอาท์พุต:



null-pointer

ตัวอย่างข้างต้นเป็นอินสแตนซ์แบบคงที่ของคลาสซิงเกิลตัน อินสแตนซ์จะเริ่มต้นพร้อมกันมากที่สุดในเมธอด Singleton get Instance

วิธีหลีกเลี่ยง Null Pointer Exception ใน Java

วิธีตั้งค่าเส้นทาง java

เพื่อหลีกเลี่ยง Null Pointer Exception ใน Java เราต้องตรวจสอบให้แน่ใจว่าอ็อบเจ็กต์ทั้งหมดได้รับการเตรียมใช้งานอย่างถูกต้องก่อนที่คุณจะใช้งาน เมื่อมีการประกาศตัวแปรอ้างอิงเราต้องตรวจสอบว่าออบเจ็กต์ไม่เป็นโมฆะและก่อนที่เราจะร้องขอเมธอดหรือฟิลด์จากอ็อบเจ็กต์ ต่อไปนี้เป็นปัญหาบางประการเกี่ยวกับแนวทางแก้ไขที่เกี่ยวข้องเพื่อเอาชนะปัญหานั้น

// โปรแกรมเพื่อสาธิตการเรียกใช้เมธอด // บน null ทำให้ NullPointerException import java.io. * class GFG {public static void main (String [] args) {// Initializing String variable with null value String ptr = null // ตรวจสอบว่า ptr. เท่ากับ null หรือทำงานได้ดี ลองใช้ {// โค้ดบรรทัดนี้พ่น NullPointerException // เนื่องจาก ptr เป็นค่าว่างถ้า (ptr.equals ('gfg')) System.out.print ('Same') else System.out.print ('Not Same')} จับ (NullPointerException จ) {System.out.print ('NullPointerException Caught')}}

เอาท์พุต:

ตรวจสอบอาร์กิวเมนต์ของวิธีการ

โปรดจำไว้เสมอว่าก่อนที่จะดำเนินการร่างของเมธอดใหม่เราควรตรวจสอบให้แน่ใจว่าอาร์กิวเมนต์เป็นค่าว่างและดำเนินการตามวิธีการต่อไป ถ้าและเมื่ออาร์กิวเมนต์ได้รับการตรวจสอบอย่างถูกต้องเท่านั้น มิฉะนั้นจะโยน“ IllegalArgumentException” และเรียกวิธีการเรียกที่มีบางอย่างผิดปกติกับอาร์กิวเมนต์ที่ส่งผ่าน

// โปรแกรมตรวจสอบว่าพารามิเตอร์เป็นโมฆะหรือไม่ก่อน // ใช้ นำเข้า java.io. * class GFG {public static void main (String [] args) {// String s ตั้งค่าสตริงว่างและเรียก getLength () String s = '' ลอง {System.out.println (getLength (s) )} catch (IllegalArgumentException e) {System.out.println ('IllegalArgumentException caught')} // String s ตั้งค่าเป็นค่าและเรียก getLength () s = 'GeeksforGeeks' ลอง {System.out.println (getLength (s) )} catch (IllegalArgumentException e) {System.out.println ('IllegalArgumentException caught')} // ตั้งค่า s เป็น null และเรียก getLength () s = null ลอง {System.out.println (getLength (s))} catch ( IllegalArgumentException e) {System.out.println ('IllegalArgumentException caught')}} // ฟังก์ชันเพื่อส่งกลับความยาวของสตริง s มันพ่น // IllegalArgumentException ถ้า s เป็นโมฆะ สาธารณะคง int getLength (สตริง s) {if (s == null) โยน IllegalArgumentException ใหม่ ('อาร์กิวเมนต์ไม่สามารถเป็นโมฆะ') ส่งคืน s.length ()}}

เอาท์พุต:

การใช้ Ternary Operator

แบบฝึกหัดสตูดิโอภาพสำหรับผู้เริ่มต้น

ตัวดำเนินการ ternary ใช้เพื่อหลีกเลี่ยง NullPointerException นิพจน์บูลีนถูกตรวจสอบและหากนิพจน์เป็นจริงค่า 1 จะถูกส่งกลับมิฉะนั้นจะส่งคืนค่า 2 สามารถใช้ตัวดำเนินการ ternary สำหรับจัดการพอยน์เตอร์ว่างได้: รูปภาพด้านขวาคือเอาต์พุตที่เกี่ยวข้อง

// โปรแกรม Java แสดงให้เห็นว่าเราสามารถใช้ // ternary operator เพื่อหลีกเลี่ยง NullPointerException import java.io. * class GFG {public static void main (String [] args) {// Initializing String variable with null value String str = null String message = (str == null) '': str.substring (0,5) System.out.println (ข้อความ) str = 'Edureka_Java_Blog' message = (str == null)? '': str.substring (0,5) System.out.println (ข้อความ)}}

เอาท์พุต:

Edurek

ด้วยเหตุนี้เราจึงมาถึงจุดสิ้นสุดของ Null Pointer Exception ใน Java ฉันหวังว่าคุณจะเข้าใจเกี่ยวกับข้อยกเว้นตัวชี้ Null

ตรวจสอบไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก หลักสูตรการฝึกอบรมและการรับรอง Java J2EE และ SOA ของ Edureka ออกแบบมาสำหรับนักเรียนและผู้เชี่ยวชาญที่ต้องการเป็น Java Developer หลักสูตรนี้ออกแบบมาเพื่อให้คุณเริ่มต้นการเขียนโปรแกรม Java และฝึกอบรมแนวคิด Java ทั้งหลักและขั้นสูงพร้อมกับเฟรมเวิร์ก Java ต่างๆเช่น Hibernate & Spring

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบล็อก“ Null Pointer Exception ใน Java” และเราจะติดต่อกลับโดยเร็วที่สุด