วิธีแก้ไข java.lang.NullPointerException

Withi Kaekhi Java Lang Nullpointerexception



ในภาษาการเขียนโปรแกรม การพบข้อผิดพลาดช่วยให้เราสามารถดำเนินการฟังก์ชันต่างๆ ได้อย่างเหมาะสมโดยแจ้งนักพัฒนา ในกรณีเช่นนี้ อาจมีบางกรณีที่ผู้พัฒนาอาจเผชิญกับ “ java.lang.NullPointerException ” โดยเฉพาะอย่างยิ่ง “ โมฆะ ” มูลค่าในขณะที่จัดการกับข้อมูลจำนวนมาก ต้องมีการจัดการข้อยกเว้นนี้เพื่อปรับปรุงฟังก์ชันการทำงานของโค้ด

บล็อกนี้จะอธิบายแนวทางรับมือกับ “ java.lang.NullPointerException '.







จะแก้ไข 'java.lang.NullPointerException' ได้อย่างไร

java.lang.NullPointerException ” จะถูกส่งกลับเมื่อมีการเรียกใช้ตัวแปรอ้างอิง (หรือยกเลิกการอ้างอิง) และไม่ได้อ้างอิงถึงวัตถุใดๆ



การสาธิต “java.lang.NullPointerException”

ในภาพประกอบด้านล่าง เราจะดูว่าข้อยกเว้นที่กล่าวถึงเกิดขึ้นได้อย่างไร:



สตริง s = null;
ฟังก์ชั่นที่กำหนดเอง ( ) ;
โมฆะคงที่ customFunc ( สตริง str ) {
System.out.println ( str.ความยาว ( ) ) ;
}


ในข้อมูลโค้ดด้านบน:





    • ขั้นแรก เริ่มต้นสตริงด้วย “ โมฆะ ' ค่า.
    • ในขั้นตอนถัดไป ให้เรียกใช้ฟังก์ชัน customFunc() โดยส่งสตริงที่ประกาศเป็นอาร์กิวเมนต์
    • หลังจากนั้นกำหนดฟังก์ชั่นชื่อ “ customFunc() ” โดยระบุสตริงที่ต้องส่งผ่านเป็นพารามิเตอร์
    • ในนิยามของฟังก์ชัน ให้ส่งกลับความยาวของสตริงที่ส่งผ่านผ่าน ' ความยาว ' คุณสมบัติ.
    • รหัสนี้จะทำงานโดยผ่าน ' โมฆะ ” ค่าของฟังก์ชัน ข้อยกเว้นที่กล่าวถึงจะถูกส่งออกไป:


จากผลลัพธ์ข้างต้น สังเกตได้ว่า “ NullPointerException ” ถูกโยนเมื่อเรียกใช้ “ โมฆะ ” เป็นอาร์กิวเมนต์ของฟังก์ชัน

วิธีที่ 1: แก้ไข “java.lang.NullPointerException” โดยใช้คำสั่ง “ลอง…จับ”

พยายาม คำสั่ง ” ช่วยในการกำหนดบล็อกรหัสที่ต้องทดสอบข้อผิดพลาดในขณะที่ดำเนินการและ “ จับ คำสั่ง ” มีผลบังคับใช้ในกรณีที่พบข้อจำกัดในบล็อกการลอง โดยเฉพาะอย่างยิ่ง ' java.lang.NullPointerException ” สามารถรองรับได้โดยใช้การดำเนินการที่ต้องการในบล็อก “ลอง” และวางข้อยกเว้นที่เป็นไปได้ในบล็อก “จับ”



ไวยากรณ์

พยายาม {
บล็อกรหัสที่จะลอง
}
จับ ( ข้อยกเว้น อี ) {
บล็อกรหัสเพื่อจัดการกับข้อยกเว้นที่ต้องเผชิญ ใน บล็อกลอง
}


ตัวอย่าง

มาดูภาพรวมตัวอย่างที่ระบุไว้ด้านล่าง:

สตริง s = null;
ฟังก์ชั่นที่กำหนดเอง ( ) ;
โมฆะคงที่ customFunc ( สตริง str ) {
พยายาม {
System.out.println ( 'อักขระตัวแรก: ' + str.indexOf ( 0 ) ) ;
}
จับ ( NullPointerException อี ) {
System.out.println ( 'NullPointerException ล้มเหลว!' ) ;
} }


ในบรรทัดโค้ดด้านบน:

    • ระลึกถึงวิธีการที่กล่าวถึงเพื่อเริ่มต้น ' โมฆะ ค่า ” และเรียกใช้ฟังก์ชันที่ระบุโดยส่งค่า Null เป็นอาร์กิวเมนต์
    • ในตอนนี้ ให้กำหนดฟังก์ชันชื่อ “ customFunc() ” มีสตริงที่จะส่งผ่านเป็นพารามิเตอร์
    • หลังจากนั้นให้ใช้ “ พยายาม ” คำสั่งเพื่อดึงดัชนีของอักขระที่ระบุในสตริงผ่านทาง “ ดัชนีของ () ' วิธี.
    • โปรดทราบว่า “ พยายาม คำสั่ง ” สามารถดำเนินการได้หากสตริงไม่เป็นโมฆะ เนื่องจากมีค่าเป็น “ โมฆะ ” ดังนั้นจะพบข้อยกเว้นซึ่งจะถูกจัดการโดย “ จับ ' คำแถลง.

เอาต์พุต


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

วิธีที่ 2: แก้ไข 'java.lang.NullPointerException' โดยใช้คำสั่ง 'if/else'

ข้อยกเว้นที่กล่าวถึงยังสามารถแยกออกผ่านทาง “ ถ้า / อื่น ๆ ' คำแถลง. ซึ่งสามารถทำได้โดยเพียงแค่ดำเนินการที่ต้องการใน “ ถ้า ” คำสั่ง และเมื่อเงื่อนไขไม่เป็นที่พอใจ ข้อยกเว้นจะถูกส่งกลับผ่าน “ อื่น ' คำแถลง.

ไวยากรณ์

ถ้า ( เงื่อนไข ) {
คำสั่งที่จะดำเนินการตามเงื่อนไขที่พอใจเช่น 'cond'
}
อื่น {
คำสั่งที่จะดำเนินการเมื่อไม่พอใจ 'ถ้า' เงื่อนไข.
}


ตัวอย่าง

ดูตัวอย่างต่อไปนี้เพื่อทำความเข้าใจเกี่ยวกับการรับมือกับข้อยกเว้น:

สตริง s = null;
ฟังก์ชั่นที่กำหนดเอง ( ) ;
โมฆะคงที่ customFunc ( สตริง str ) {
ถ้า ( สตริง ! = โมฆะ ) {
System.out.println ( 'อักขระตัวแรก: ' + str.indexOf ( 0 ) ) ;
}
อื่น {
System.out.println ( 'NullPointerException ล้มเหลว!' ) ;
}
}


ใช้ขั้นตอนที่กล่าวถึงด้านล่างตามที่ระบุในโค้ดด้านบน:

    • ทำซ้ำขั้นตอนที่กล่าวถึงสำหรับการเริ่มต้นค่า Null และเรียกใช้ฟังก์ชันโดยผ่าน ' โมฆะ ” ค่าเป็นอาร์กิวเมนต์
    • ถัดไปประกาศฟังก์ชันในทำนองเดียวกัน “ customFunc() ” มีพารามิเตอร์ที่ระบุ
    • ตอนนี้ ใช้ “ ถ้า / อื่น ๆ ” คำสั่งเช่นนั้นตามเงื่อนไขที่พอใจใน “ ถ้า คำสั่ง ” บล็อกที่เกี่ยวข้องดำเนินการ
    • ในอีกกรณีหนึ่ง “ อื่น ” บล็อกจะมีผลบังคับใช้และส่งข้อยกเว้นที่กล่าวถึง
    • โปรดทราบว่าเงื่อนไขใน “ ถ้า คำสั่ง ” นั้นเหมือนกับแนวทางเดิมดังนั้นจึงเป็นการปลอมแปลง

เอาต์พุต


นั่นเป็นวิธีที่คุณสามารถจัดการกับ “ java.lang.NullPointerException '.

บทสรุป

java.lang.NullPointerException ” จะถูกส่งกลับเมื่อมีการเรียกใช้หรือยกเลิกการอ้างอิงตัวแปรอ้างอิง และไม่ได้อ้างอิงถึงวัตถุใดๆ ข้อยกเว้นนี้สามารถจัดการได้โดยวางไว้ใน ' ลอง…จับ ” คำสั่งที่ว่าเมื่อดำเนินการ “ พยายาม ” บล็อก ข้อยกเว้นที่ต้องเผชิญรองรับโดยบล็อกหลัง นอกจากนี้ “ ถ้า / อื่น ๆ คำสั่ง ” สามารถใช้เพื่อแก้ไขข้อยกเว้นนี้โดยวางไว้ใน “ อื่น คำสั่ง ” ถ้า “ ถ้า ” คำสั่งล้มเหลวในการดำเนินการ บล็อกนี้กล่าวถึงแนวทางการรับมือกับ “ java.lang.NullPointerException '.