כיצד לפתור את ה-java.lang.NullPointerException

Kyzd Lptwr T H Java Lang Nullpointerexception



בשפות תכנות, מפגש עם שגיאות מאפשר לנו לבצע פונקציות שונות בצורה מתאימה על ידי הנחיה למפתח. במקרה כזה, יכולים להיות מקרים שבהם המפתח יכול להתמודד עם ' java.lang.NullPointerException 'על מסויים' ריק ' ערך בזמן התמודדות עם נתונים בכמות גדולה. יש לטפל בחריג זה על מנת לייעל את פונקציונליות הקוד.

בלוג זה ירחיב על הגישות להתמודדות עם ' java.lang.NullPointerException '.







כיצד לפתור את 'java.lang.NullPointerException'?

ה ' java.lang.NullPointerException ” מוחזר כאשר משתנה התייחסות מופעל (או ביטול הפניה) ואינו מתייחס לאובייקט כלשהו.



הדגמה של 'java.lang.NullPointerException'

באיור הנתון להלן, נראה כיצד מתרחש החריג הנדון:



מחרוזת s = null;
customFunc ( ס ) ;
ריק סטטי customFunc ( String Str ) {
System.out.println ( str.length ( ) ) ;
}


בקטע הקוד שלמעלה:





    • ראשית, אתחול מחרוזת עם ' ריק ' ערך.
    • בשלב הבא, הפעל את הפונקציה customFunc() על ידי העברת המחרוזת המוצהרת כארגומנט שלה.
    • לאחר מכן, הגדר פונקציה בשם ' customFunc() ' על ידי ציון מחרוזת שיש להעביר כפרמטר שלה.
    • בהגדרת הפונקציה, החזר את אורך המחרוזת שעברה באמצעות ' אורך ' תכונה.
    • קוד זה יפעל כך שעל ידי העברת ' ריק ' ערך לפונקציה, החריג שנדון ייזרק:


בפלט לעיל, ניתן לראות כי ' NullPointerException ' נזרק בעת הפעלת ' ריק ' כארגומנט פונקציה.

גישה 1: פתור את 'java.lang.NullPointerException' באמצעות הצהרות 'try...catch'

ה ' לְנַסוֹת הצהרת ' מסייעת בהגדרת בלוק קוד שיש לבדוק לאיתור שגיאות תוך כדי ביצוע וה' לתפוס ' ההצהרה נכנסת לתוקף במקרה של מגבלה ב-try block. ליתר דיוק, ה' java.lang.NullPointerException ניתן לטפל על ידי יישום הפעולה הרצויה בבלוק 'נסה' והצבת החריג הסביר בבלוק 'תפוס'.



תחביר

לְנַסוֹת {
בלוק הקוד לנסות
}
לתפוס ( חריג ה ) {
בלוק הקוד לטיפול בחריג הניצב בפניו ב חסימת הניסיון
}


דוגמא

בואו נסקור את הדוגמה המפורטת להלן:

מחרוזת s = null;
customFunc ( ס ) ;
ריק סטטי customFunc ( String Str ) {
לְנַסוֹת {
System.out.println ( 'דמות ראשונה:' + str.indexOf ( 0 ) ) ;
}
לתפוס ( NullPointerException ה ) {
System.out.println ( 'NullPointerException נזרק!' ) ;
} }


בשורות הקוד לעיל:

    • זכור את הגישות הנדונות לאתחול ' ריק ” ערך והפעל את הפונקציה המוצהרת על ידי העברת הערך null כארגומנט שלה.
    • כעת, באופן דומה, הגדר פונקציה בשם ' customFunc() ' שיש להעביר את המחרוזת כפרמטר שלה.
    • לאחר מכן, החל את ' לְנַסוֹת ' הצהרה כדי להביא את האינדקס של התו שצוין במחרוזת באמצעות ' אינדקס של() ' שיטה.
    • שימו לב שה' לְנַסוֹת ניתן להפעיל את המשפט אם המחרוזת אינה null. מכיוון שהערך הוא ' ריק ', כך שייתקל חריג אשר יטופל על ידי ' לתפוס 'הצהרה.

תְפוּקָה


בפלט לעיל, ניתן לראות שהחריג שצוין מסופק על ידי ' לתפוס 'הצהרה ולכן היא נזרקת, ובכך נפתרת אותה.

גישה 2: פתור את 'java.lang.NullPointerException' באמצעות הצהרת 'if/else'

ניתן למיין את החריג שנדון גם באמצעות ' אחרת 'הצהרה. ניתן לעשות זאת פשוט על ידי ביצוע הפעולה הרצויה ב' אם ' הצהרת ובמצב לא מסופק, חריגה מוחזרת באמצעות ' אַחֵר 'הצהרה.

תחביר

אם ( תנאי ) {
ההצהרה שתתבצע בתנאי המרוצה, כלומר 'תנאי'
}
אַחֵר {
ההצהרה שיש לבצע על הלא מרוצים 'אם' מַצָב.
}


דוגמא

עברו על הדוגמה הבאה כדי להבין את ההתמודדות עם החריג:

מחרוזת s = null;
customFunc ( ס ) ;
ריק סטטי customFunc ( String Str ) {
אם ( str ! = ריק ) {
System.out.println ( 'דמות ראשונה:' + str.indexOf ( 0 ) ) ;
}
אַחֵר {
System.out.println ( 'NullPointerException נזרק!' ) ;
}
}


החל את השלבים הנידונים להלן כפי שמופיעים בקוד לעיל:

    • חזור על השלבים שנדונו לאתחול ערך ריק והפעלת הפונקציה על ידי העברת ה-' ריק 'ערך כטיעון שלו.
    • לאחר מכן, הכריז באופן דומה על הפונקציה ' customFunc() ' בעל הפרמטר שצוין.
    • כעת, החל את ' אחרת ' הצהרה כזו שבהתקיים התנאי ב' אם ', הבלוק המתאים מבצע.
    • במקרה השני, ' אַחֵר ' בלוק ייכנס לתוקף ויזרוק את החריג הנדון.
    • שימו לב שהתנאי ב' אם 'הצהרה זהה לגישה הקודמת, ובכך מזייפה אותה.

תְפוּקָה


כך תוכל להתמודד עם ' java.lang.NullPointerException '.

סיכום

ה ' java.lang.NullPointerException ” מוחזר כאשר משתנה התייחסות מופעל או ביטול הפניה ואינו מתייחס לאובייקט כלשהו. ניתן לטפל בחריג זה על ידי הצבתו ב' נסה לתפוס ' הצהרה כזו שעם ביצוע ' לְנַסוֹת ' בלוק, החריג המתמודד יכול להיות מסופק על ידי הבלוק האחרון. וגם ה ' אחרת ניתן להשתמש בהצהרה כדי לפתור חריג זה על ידי הצבתו ב' אַחֵר ' הצהרה אם ' אם ' ההצהרה נכשלת בביצוע. בלוג זה דן בגישות להתמודדות עם ' java.lang.NullPointerException '.