ในภาษาการเขียนโปรแกรม การพบข้อผิดพลาดช่วยให้เราสามารถดำเนินการฟังก์ชันต่างๆ ได้อย่างเหมาะสมโดยแจ้งนักพัฒนา ในกรณีเช่นนี้ อาจมีบางกรณีที่ผู้พัฒนาอาจเผชิญกับ “ 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 '.